我有一个错误陷阱,如下所示:
trap failed ERR
function failed {
local r=$?
set +o errtrace
set +o xtrace
echo "###############################################"
echo "ERROR: Failed to execute"
echo "###############################################"
# invokes cleanup
cleanup
exit $r
}
我的代码中有一部分确实会出现错误:
command1
command2
command3
set +e #deactivates error capture
command4_which_expects_error
set -e #re-activates error capture
command5
总的来说,我需要在执行命令期间忽略陷阱4_which_expects_error
设置+ e 似乎没有禁用陷阱。还有其他方法可以“取消陷阱”然后“重新陷阱”吗?
最佳答案
您可以在陷阱手册中找到以下内容:
这意味着它不是由set -e
触发的,而是在相同条件下执行的。在ERR上的陷阱中添加set -e
将使您的脚本在执行陷阱后退出。
要删除陷阱,请使用:
trap - [signal]
关于bash - 陷阱命令后如何解除陷阱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31201572/