0

我正在尝试使用 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

但是,当我在其他机器上尝试时..它工作没问题。请帮忙。

4

1 回答 1

3

您的test.sh脚本具有 Windows 样式的行尾。shell 将每个\r\n序列视为\r行尾的一个字符。

外壳是看到do\r而不是do。由于\r将光标发送到行首,这就是您在行首看到引号的原因。尝试

./test.sh 2>&1 | 猫-A

查看错误消息中的实际内容。

通过更正行尾之类的方法过滤您的test.sh脚本。dos2unix(请务必先阅读手册页;dos2unix与大多数文本过滤器不同,它会覆盖其输入文件。)

这是 Cygwin 上的常见问题。您是否使用 Windows 编辑器创建脚本?

于 2012-07-11T22:47:17.817 回答