Zsh:在脚本中终止行的惯用方法是什么? (分号,换行)

Zsh:在脚本中终止行的惯用方法是什么? (分号,换行)

我很乐意将分号、换行符和与号放在原来的位置需要的。但什么是“正确”的方法呢?这只是风格/个人喜好的问题,还是其中一个在某些方面比另一个更好?

while true; do
   cmd1
   cmd2
   cmd3
done
while true; do
   cmd1;
   cmd2;
   cmd3;
done

第二个使用更多的墨水/电子,但你可以简单地连接线,它仍然可以:

while true; do cmd1; cmd2; cmd3; done

答案1

词法分析器/解析器并不认为它们有什么不同。

你永远不会只是随机地连接线,这没有任何意义,所以你并没有真正解决现实世界的问题。

因此,所有差异都是人类感知的。

我个人主张每个命令在其自己的行中清晰可见,没有分号,除非语法相关,因为其他代码更有可能包含容易错过的错误。 (这是因为初学者会随机散布无意义的元素,例如分号,并且初学者的代码更有可能出错。从因果角度来看,如果您向代码中添加的元素在语法上既不重要,也没有澄清已经存在的内容背后的意图,显然,我的大脑必须明确忽略它们,并且将没有能力发现代码的实际问题。)

但这纯粹是一种偏好,并没有什么“正确”之处,除非你想将“新浪巴拉个人代码指南”视为一条规则。

但总而言之,一致性胜过任何“我喜欢那样”的推理。如果您编写 shell 脚本,请使用一个编辑器来执行缩进以及一些有限的语法突出显示和检查。如果该编辑器自动在每行末尾添加一个分号,或者将一行标记为缺少分号:很好!但没有什么比阅读其中三分之一的行遵循与其他行不同的约定更糟糕的了。让读者的注意力集中在重新学习每一行的结构上,而不是学习剧本的内容和逻辑。

相关内容