【发布时间】:2015-06-07 07:25:36
【问题描述】:
即http://fvue.nl/wiki/Bash:_Error_handling#Set_ERR_trap_to_exit
为什么需要set -o errtrace 才能使函数调用中的陷阱设置/取消设置起作用?
#!/usr/bin/env bash
function trapit {
echo 'trapped in a box'
}
function setTrap {
trap 'trapit' ERR
}
function unsetTrap {
trap - ERR
}
function foo_init {
fooOldErrtrace=$(set +o | grep errtrace)
set -o errtrace
trap 'echo trapped' ERR # Set ERR trap
}
function foo_deinit {
trap - ERR # Reset ERR trap
eval $fooOldErrtrace # Restore `errtrace' setting
unset fooOldErrtrace # Delete global variable
}
# foo_init
setTrap
echo 'set'
false
echo 'unset'
#foo_deinit
unsetTrap
false
【问题讨论】: