我不明白为什么会收到此错误?对我来说,语法似乎不错。
$ for f in todo/family/* ; echo "$f" ; done
zsh: parse error near `done'
第一个$
是PS1-在常规的“命令行”上-不在文件中。
答案 0 :(得分:1)
do
。根据@CharlesDuffy的评论,这显然是与拼写错误/语法缺失有关的问题。
What I wrote: for f in todo/family/* ; echo "$f" ; done
# ^ missing do
Bash expected: for f in todo/family/* ; do echo "$f" ; done
很明显,使用spellcheck.net(另一个很棒的资源)可以看到此错误/错误-谢谢查尔斯。
#!/bin/sh
for f in todo/family/* ; echo "$f" ; done
您将清楚地看到该错误:
$ shellcheck myscript
Line 3:
for f in todo/family/* ; echo "$f" ; done
^-- SC1073: Couldn't parse this for loop. Fix to allow more checks.
^-- SC1058: Expected 'do'.
^-- SC1072: Expected 'do'. Fix any mentioned problems and try again.
在do
之前的echo
处加一个空格,然后所有内容都将检出:
#!/bin/sh
for f in todo/family/* ; do echo "$f" ; done
进入spellcheck.net-您可以看到没有错误。删除do
,您将看到我的问题所在。
shellcheck
command: