我正在使用for循环尝试一个简单的bash脚本,并不断收到以下错误:
'/test.sh: line 2: syntax error near unexpected token `do
'/test.sh: line 2: `do
以下是正在使用的代码......
for animal in dog cat elephant
do
echo "There are ${animal}s.... "
done
然而,当我尝试其他机器时......它没有问题。 请帮忙。
答案 0 :(得分:3)
您的test.sh
脚本具有Windows样式的行结尾。 shell将每个\r\n
序列视为行尾的\r
字符。
shell看到do\r
而不是do
。由于\r
将光标发送到行的开头,这就是为什么你在行的开头看到引号。尝试
./ test.sh 2>& 1 |猫-A
查看错误消息中的实际内容。
通过类似test.sh
的内容过滤dos2unix
脚本以更正行结尾。 (请务必先阅读手册页;与大多数文本过滤器不同,dos2unix
会覆盖其输入文件。)
这是Cygwin的常见问题。您是否使用Windows编辑器创建脚本?