我想在 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"