Синтаксическая ошибка рядом с неожиданной знак `Элиф'
./chkf: line 30: syntax error near unexpected token `elif'
'/chkf: line 30: `elif [ -f "$object" ] ; then
if [ -d "$object" ] ; then
message="$message a directory"
elif [ -f "$object" ] ; then
message="$message a regular file."
else
message="$message not a known file type"
fi
кроме этого,
./chkf: line 38: syntax error near unexpected token `else'
'/chkf: line 38: `else
if [ -w "$object" ] ; then
write="writeable"
else
write="not writeable"
fi
что в этом плохого? Кажется, это правильно. Я пробовал так много вариантов и не могу понять, что не так. Есть какой-то невидимый персонаж? Если да, то есть ли команда снять его?
Edit: когда я добавить #!/bin/bash
вверху, я получаю следующую ошибку:
interpreter "/bin/bash" not found
file link resolves to "/usr/bin/bash"
-bash: ./chkf: /bin/bash^M: bad interpreter: No such file or directory
5 ответов
Это конец вашей линии. Передача его из Windows оставила CR/LF
линия окончаний.
когда я создаю скрипт, добавьте вручную CR
символы, я получаю точно такую же ошибку:
qq.sh: line 3: syntax error near unexpected token `elif'
'q.sh: line 3: `elif [ 1 == 1 ] ; then
вы можете исправить это, удалив символ CR из окончаний строк CR/LF.
cat script.sh | sed '/5/d' >newscript.sh
- символ CR соответствует
5
восьмеричное представление, как указано в ASCII
похоже, у вас есть "проблема dos", встроенный control-M в вашем файле. исправить это с помощью sed:
sed -i 's/\r//' chkf
два способа решить эту проблему
1) Использование Sed: -
синтаксис
sed -i 's/\r//' filename.txt
2) Использование команды dos2unix
синтаксис
dos2unix fileName.txt fileName.txt
Теперь, когда вы добавили дополнительное сообщение об ошибке, у меня есть мысль:^M
is \r, который является окончанием строки Mac OS X или частью окончания строки Windows-Linux использует \n только как EOL. Если вы редактируете в vim
, вы должны быть в состоянии видеть ^M
Если это не прямо через файл.
Я получил ниже ошибку в моей почте, когда я настроил cron для magento.
/bin/sh: -c: line 0: syntax error near unexpected token `newline'
/bin/sh: -c: line 0: `php /home/pooja/public_html/magento/journal/cron1.php >'
Я нашел решение для этого, я удаляю пространство новой строки из моего cron1.PHP-файл. и свою работу.
(источник)