我有一个脚本
#! /bin/sh
set -eux
command_a
command_b | command_c
while [ true ]; do
command_c
done
当任何命令失败时我都会失败。如果command_a失败,则脚本失败,但如果command_b或command_d(不确定command_c)失败,则脚本继续运行。
答案 0 :(得分:1)
如果你使用set -eux
,这不应该发生,如果我知道实际的命令,我可以说得更好。
实现退出的一种方法是使用||
while [ true ]; do
command_d || exit 1
done
a || b
表示“做(完全)。如果没有成功,请执行b”
此外,您应该使用set -euxo pipefail
请参阅:https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/