在 Z shell ('zsh') 命令行上的 'For' 循环: "parse error near `done'"



为什么会出现此错误?对我来说,这似乎是很好的语法。

for f in todo/family/* ; echo "$f" ; done

输出:

zsh:解析错误接近"完成">

这是在常规命令行上 - 而不是在文件中。

我的命令中缺少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

显然,使用ShellCheck(另一个很好的资源(可以看到此错误/拼写错误。


如何检查与 Bash 相关的语法错误:

1.转到ShellCheck并将其粘贴到:

#!/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.

echo之前添加带有空格的do,所有内容都会检查出来:

#!/bin/sh
for f in todo/family/* ; do echo "$f" ; done

进入壳牌检查 - 你可以看到没有错误。 删除do,您将看到我的问题是什么。

2. (可选(您可以安装shellcheck命令

最新更新