在 bash 脚本中,如何检查是否设置了“-e”?

Mos*_*ieb 5 bash exit-code

set -e经常在脚本中使用,但有时,脚本在某些命令中失败是可以的。
我尝试检查是否set -e打开,但找不到方法 - 没有选项(我知道)set可以提供当前值。
也尝试过这样的: set | grep errexiterrexit是选项名称-e)和set | grep "-e",没有运气。
我想检查是否errexit设置了该选项,以便我可以在我随着时间的推移构建的一些库函数中暂时禁用它(如果需要,可以使用set +e和重新应用set -e)。就像是:

if [ errexit is set ]; then
   ERR_EXIT=1
   set +e
fi
...
run some code that may fail
...
if [ "${ERR_EXIT}" = 1 ]; then
    set -e
fi
Run Code Online (Sandbox Code Playgroud)

gle*_*man 6

您检查$-变量是否包含e

if [[ $- == *e* ]]
Run Code Online (Sandbox Code Playgroud)

请参阅手册中的特殊参数


对于 POSIX shell,case是模式匹配的内置工具

if [[ $- == *e* ]]
Run Code Online (Sandbox Code Playgroud)