./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
这有什么问题?这似乎是正确的。我尝试了很多变化,无法弄清楚出了什么问题。有某种看不见的角色吗?如果是这样,是否有剥离它的命令?
修改:当我在顶部添加#!/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
答案 0 :(得分:34)
这是你的行结尾。从Windows传输它会使CR/LF
行结束。
当我创建脚本然后手动添加CR
个字符时,我得到完全相同的错误:
qq.sh: line 3: syntax error near unexpected token `elif'
'q.sh: line 3: `elif [ 1 == 1 ] ; then
您可以通过从CR / LF行结尾中删除CR字符来修复它。
cat script.sh | sed '/\015/d' >newscript.sh
\015
八进制表示
答案 1 :(得分:3)
看起来你有“dos问题”,嵌入式控件-M在你的文件中。用sed修复它:
sed -i 's/\r//' chkf
答案 2 :(得分:1)
解决此问题的两种方法
1)使用Sed: -
语法
dos2unix fileName.txt fileName.txt
2)使用dos2unix命令
语法
git cherry-pick
答案 3 :(得分:0)
既然您已经添加了其他错误消息,我有一个想法:^M
是\ r \ n,这是Mac OS X行结尾或Windows行结尾的一部分 - Linux仅使用\ n作为EOL。如果您在vim
进行修改,则应该能够看到^M
,如果它不正确,请通过该文件。
答案 4 :(得分:0)
接受的答案不正确。它已经 sed '/\015/d' ... 这将删除具有 \r 字符的每一行。
接下来的两个答案正确显示: sed -i 's/\r//' filename.txt
答案 5 :(得分:-1)
当我为magento设置cron时,我的邮件中出现以下错误。
/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文件中删除换行符空间。 和它的工作。
(source)