我的命令中缺少
2. (可选(您可以安装
为什么会出现此错误?对我来说,这似乎是很好的语法。
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
,您将看到我的问题是什么。