Bash 捕获任何类似 -e 的错误,但不退出,执行其他操作

Bash 捕获任何类似 -e 的错误,但不退出,执行其他操作

我想在 shell 脚本 (bash) 中设置一个标志,以便如果有任何内容返回非零,则会设置一个标志(即设置一个类似 的变量errors="True")。

到目前为止,我考虑过调用脚本scriptname.sh 2>Error.log,然后执行以下操作:

 if $(wc -l error.log) != 0; then
   errors="True"

一定有更好的方法。请赐教。

答案1

这正是trap ERR目的。不幸的是,它具有与set -e.与 类似set -e,任何在条件表达式中返回非零的命令都将触发陷阱。这是一些示例代码:

error=0
set_error() {
    (( error++ )) 
}

trap set_error ERR
ls askdjasdaj 2>/dev/null
false
false || true # false returns non-zero but is not counted due to the conditional
echo "$error" # outputs "2"

相关内容