如何通过多行脚本格式化 && 运算符的多次使用?

Nic*_*IEA 2 bash multiline conditional-statements

我正在使用&&链接命令(仅当前一个命令返回 ok (0) 代码时才执行命令)。

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

command 1 && command 2 && command 3 && command 4 && command 5 && command 6 && command 7 && command 8...
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用&&多条线?

command 1 
 && command 2
 && command 3
 && command 4
 && command 5
 && command 6
 && command 7
 && command 8
...
Run Code Online (Sandbox Code Playgroud)

回答

正如 @Kamil Cuk 所提议的,在每行末尾使用 && 可以解决我的问题。但只会跳过 && 后面的行。我宁愿跳过其余的一切。但我同意——这个提议解决了问题。我们可以在每行末尾使用 && 在多行上应用条件。谢谢。

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

echo "A" \
echo "B" \
echo "YES"
--> A echo B echo YES
Run Code Online (Sandbox Code Playgroud)

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

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

感谢大家的快速帮助。

问候,尼古拉斯

tri*_*eee 8

Bash 知道这&&需要另一个命令,因此将其放在换行符之前以避免反斜杠。

command 1 &&
command 2 &&
command 3 ... etc
Run Code Online (Sandbox Code Playgroud)

不过,这个问题听起来模糊地像是您应该使用其他东西来代替。如果不是,set -e那么也许make可以用普通的旧 shell 脚本来代替?