Shell语法:如何正确使用\来换行?

Shell语法:如何正确使用\来换行?

我曾经认为在列表中换行的适当方法是

command1 && \
command2

事实证明并非如此,不需要\

$ [  $(id -u) -eq 1000  ] &&                                                   
> echo yes
yes

管道也以|同样的方式工作。

bash 手册页中有关管道和列表的部分没有对此进行任何说明。因此,我的问题是:\打破长线的正确用法是什么?

答案1

如果该语句无需继续即可正确,则需要使用\.因此,以下内容无需反斜杠即可运行,因为您不能以 结束命令&&

echo 1 &&
echo 2

在这里,您需要反斜杠:

echo 1 2 3 \
4

或者

echo 1 \
&& echo 2

否则,bash 将在处理完第一行后立即执行该命令,而不等待下一行。

答案2

我在一家大型 IT 公司的职业生涯中遇到的脚本风格指南之一,要求我在 shell 脚本中每行使用不超过 80 个字符,并在换行后缩进。另外,我必须在管道或 && 或 || 之前换行。喜欢 :

command1 \
  && command2 \
  || command3 \
  | command4

目标是具有清晰的可读性。

相关内容