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

How to format many uses of the && operator with multi line script?

我正在使用 && 链接命令 (execute a command only if the previous command returned ok (0) code)。

但是我需要在许多命令(超过 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 name...

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

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

-e Exit immediately if a simple command exits with a non-zero status, unless the command that fails is part of an until or while loop, part of an if statement, part of a && or || list, or if the command's return status is being inverted using !. -o errexit

感谢大家的快速帮助。

此致, 尼古拉斯

反斜杠!

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

请注意,不要在 last 行错误地放置反斜杠!

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

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

这个问题听起来很模糊,不过你应该改用其他东西。如果不是 set -e 那么也许 make 而不是普通的旧 shell 脚本?