我使用
启用了陷阱DEBUGfunction my_trap ()
{
# some code in here
}
trap 'my_trap' DEBUG
然后我需要禁用它一段时间,所以我做了
trap - DEBUG
立即:
如何重新启用相同的陷阱?
..没有重写:
trap 'my_trap' DEBUG
我不想重写它,因为如果我更改陷阱功能名称,我只需要在一点上更改它。
答案 0 :(得分:1)
我只发现了以下方式:
traps=$( trap )
declare regex="'([^']+)' DEBUG"
[[ ${traps} =~ ${regex} ]]
trap "${BASH_REMATCH[1]}" DEBUG
还有更优雅的吗?
答案 1 :(得分:0)
你找到的方式是正确的,但有了这个,
您不使用超过1个可用变量:
检索包含引用'
的陷阱脚本:
[[ $(trap) =~ trap\ --\ \'([^$'\n']*)\'\ DEBUG ]] && var="${BASH_REMATCH[1]}"
进行了测试:
trap -- 'echo $RANDOM;echo $'\''Hello\nWorld'\'';date' DEBUG
[[ $(trap) =~ trap\ --\ \'([^$'\n']*)\'\ DEBUG ]] &&trCmd="${BASH_REMATCH[1]}"
trap DEBUG
eval trap -- \'$trCmd\' DEBUG