【发布时间】:2019-03-25 05:29:00
【问题描述】:
我不明白为什么会出现此错误?这对我来说似乎是很好的语法。
$ for f in todo/family/* ; echo "$f" ; done
zsh: parse error near `done'
第一个$ 是 PS1 - 这是在常规“命令行”上 - 不在文件中。
【问题讨论】:
-
您需要
do。for f in todo/family/*; do echo "$f"; done -
顺便说一句,虽然它一般不支持 zsh,但这是 shellcheck.net 会捕获的(只要您尝试使用的语法取自POSIX sh 系列,因此也兼容 sh/ksh/bash/dash)。
-
for循环在zsh中有一个缩短的单行形式,不过:for f (todo/family/*); echo "$f"。不需要do、in或done关键字,并且列表放在索引变量后面的括号中。在这种情况下,正文中只允许一个子列表。 -
(最好阅读
man zshmisc,尤其是在“复杂命令的替代形式”下,以准确了解使用简写形式可以表示和不能表示的内容。) -
@CharlesDuffy - 冒着稍后将该问题标记为删除的风险 - 我将留下一个格式正确的答案。我希望加倍努力并按照您的建议展示如何使用拼写检查命令找到这些问题将对未来的访问者有所帮助。感谢您的所有帮助。
标签: for-loop command-line zsh parse-error