Piszę skrypt, czy pojawia się błąd w wierszach 2-3. Błąd jest drukowany w następujący sposób:
./ex6.sh: line2: $'\r': command not found
./ex6.sh: line3: syntax error near unexpected token '$'\r''
./ex6.sh: line3: 'fund ()
Plik nazywa się ex6.sh
. Czy ktoś może udzielić wskazówek, dlaczego ten błąd występuje?
#!/bin/sh
func ()
{
if [ "$1" == "" ]; then
echo "Default";
for i in `find` ;
do
if [ -d $i ]; then
echo $i "is a directory";
fi
if [ -f $i ]; then
if [ "$i" != "./script.sh" ]; then
echo $i "is a file";
fi
fi
done
fi
if [ "$1" == "--long" ]; then
echo "--long";
for i in `find` ;
do
if [ -d $i ]; then
echo $i "is a directory";
fi
if [ -f $i ]; then
echo $i "is a file";
fi
done
fi
if [ "$1" == "--rm" ]; then
echo "--rm";
for i in `find` ;
do
if [ -d $i ]; then
echo $i "is a directory";
fi
if [ -f $i ]; then
echo $i "is a file";
fi
done
fi
}
getArgs () {
if [ "$1" == "--long" ]; then
echo "got the first param $1";
else
if [ "$1" == "--rm" ]; then
echo "got the second param $1";
else
if [ "$1" == "" ]; then
echo "got default param";
else
echo "script.sh: unknown option $1";
exit;
fi
fi
fi
}
getArgs $1;
#ARGS=$1;
func $1;
find
Wartości zwracane), a nie tylko nowe linie.Odpowiedzi:
Użyj
dos2unix
lub odpowiedniego edytora tekstu, aby przekonwertować wszystkie podziały wiersza z systemu Windows\r\n
na\n
.źródło
Sprawdź znak końca linii w pliku. Prawdopodobnie masz styl Windows ( CR+ LF) i powinieneś mieć styl Unix / Linux (tylko LF).
źródło