【发布时间】:2017-04-05 10:10:41
【问题描述】:
for 循环 shell 脚本语法错误:意外单词(应为“do”)
#!/bin/sh
PRO="a t d e k "
for file in $PRO
do #this will be line 6
echo $file
done
输出:第 6 行:语法错误:意外单词(期待“do”)
【问题讨论】:
-
您的文件中可能有 DOS 行结尾,因此 shell 看到的是
do\r而不是do。 -
如何验证?
-
@chepner,是的 .. 当我在 vi 编辑器中打开它时发现了一个 ^M。它帮助我解决了它。后来参考linuxcommand.org/man_pages/dos2unix1.html 使用了dos2unix命令
-
顺便说一句,在这种情况下,为什么要将循环标记放在字符串变量中?
for file in a t d e k; do似乎一点也不难读或易于维护,并且具有明显的优势,即您也可以在其中包含带有元字符等的文件名(当然,只需正确引用它们;如果他们必须这样做,您就不能轻易做到在一个字符串中)。
标签: sh