当任何命令(包括非简单命令)失败时,Bash脚本退出

时间:2017-12-13 12:12:22

标签: bash

我有一个脚本

#! /bin/sh
set -eux

command_a

command_b | command_c

while [ true ]; do
    command_c
done

当任何命令失败时我都会失败。如果command_a失败,则脚本失败,但如果command_b或command_d(不确定command_c)失败,则脚本继续运行。

1 个答案:

答案 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/