如果在bash中处于活动状态,则确定是否设置`set -e`标志

时间:2018-04-20 20:22:51

标签: bash

在bash脚本/ shell中,是否有一种编程方式来确定set -e标志是否处于活动状态?

我只需要一个布尔值让我知道它是否打开/关闭。

4 个答案:

答案 0 :(得分:4)

来自help test

    -o OPTION      True if the shell option OPTION is enabled.

...

[ -o errexit ]

答案 1 :(得分:2)

您可以查看$-变量,了解是否启用了 e 选项:

[[ $- =~ e ]]

来自help set

The current set of flags may be found in $-.

答案 2 :(得分:2)

您还可以使用shopt的退出代码:

if shopt -qo errexit; then 
    echo enabled
    # do something
fi

答案 3 :(得分:1)

$ set -e
$ if grep -q 'errexit' <<<"$SHELLOPTS";then echo "set -e is enabled";else echo "set -e is disabled";fi
set -e is enabled
$ set +e
$ if grep -q 'errexit' <<<"$SHELLOPTS";then echo "set -e is enabled";else echo "set -e is disabled";fi
set -e is disabled