假设我想在 zsh 的一行中运行 for 循环中的多个命令(在这种情况下,打印目录中的项目名称并打印它
for i in *; echo "=================="; cat $i done;
使用给定的代码,我得到了正确数量的“==================”打印,但我只得到了使用
cat
命令打印的最后一项
您(几乎)总是可以用分号替换换行符:
for i in *; do echo "=================="; cat "$i"; done;
请注意,尾随分号(“完成”之后)不是必需的。
在
bash
文档中,搜索“控制运算符”,你会发现:
“一个简单的命令......由控制操作符终止”,“是以下符号之一:
|| & && ; ;; ( ) | <newline>
”
换句话说,这些符号中的任何一个都可以用于分隔命令,并且
;
在大多数情况下与换行符一样有效。