这有效:
$ bash -c 'while true; do echo foo; sleep 1; done'
foo
foo
...
但不是这个:
$ while true; do echo foo; sleep 1; done
bash: syntax error near unexpected token `done'
我在 zsh 上看到同样的问题:
zsh:“完成”附近解析错误
注意:破折号有效。
答案1
像这样的问题经常被误解,因为很少有人意识到它aliases
在非交互式 shell 中被禁用。
在您的情况下,是一个名为 name 的别名do
导致了问题。
要调查类似的问题,通常可以使用以下命令启动新的 shell:
HOME=/tmp $shell
然后再试一次。这可以避免交互式 shell 读取启动脚本。