如何使用多行脚本格式化 && 运算符的许多用法?



我使用&&来链接命令(只有在上一个命令返回ok(0)代码时才执行命令)。

但我需要在许多命令上添加这个条件(超过8个),然后我的代码看起来很难看(对于一行来说太长了):

command 1 && command 2 && command 3 && command 4 && command 5 && command 6 && command 7 && command 8...

有没有一种方法可以将&&与多条线路一起使用?

command 1 
&& command 2
&& command 3
&& command 4
&& command 5
&& command 6
&& command 7
&& command 8
...

答案

正如@Kamil Cuk提出的,使用&每行末尾都可以解决我的问题。但只有跟随&将被跳过。我宁愿跳过其余的。但我同意——这个提议解决了问题。我们可以使用&在每行的末尾应用多行上的条件。非常感谢。

我测试了@iBug的提议。我观察到了同样的问题,其他指令(列表外)仍在处理中。但是最糟糕的使用\的结果是错误的:它执行第一个命令,然后打印命令2的名称。。。

echo "A" 
echo "B" 
echo "YES"
--> A echo B echo YES

最后,我使用的解决方案是由@Biffen:set-e 找到的

-e如果一个简单命令以非零状态退出,则立即退出,除非失败的命令是until或while循环的一部分,是if语句,一个&或列表,或者如果命令的返回状态正在使用!反转-o错误退出

感谢大家的快速帮助。

谨致问候,尼古拉斯·

Bash知道&&需要另一个命令,所以把它放在换行符之前以避免反斜杠。

command 1 &&
command 2 &&
command 3 ... etc

不过,这个问题听起来有点像你应该用其他东西来代替。如果不是set -e,那么可能是make而不是普通的旧shell脚本?

Backslash!

command 1 
&& command 2 
&& command 3 
&& command 4 
&& command 5 
&& command 6 
&& command 7 
&& command 8 
...
&& command n

请注意,不要错误地在最后一行上加上反斜杠!

最新更新