testttt(){
echo after trapp
}
test(){
echo inside testcode
exit 2
}
trap 'testttt' 2
test
当我运行脚本时,我得到输出
->内部测试代码
但我一直在期待
->内部测试代码
在特拉普之后
为什么没有陷阱“testttt”2捕获testttt()
最佳答案
只有当脚本接收到SIGINT
(信号2)时,陷阱才执行,而不是退出状态2的任何时间。
相反,您应该捕获EXIT
,然后测试处理程序中的退出状态。
testttt(){
exit_status=$?
if [[ $exit_status -eq 2 ]]; then
echo after trapp
fi
}
test(){
echo inside testcode
exit 2
}
trap 'testttt' EXIT
test
关于linux - Linux脚本中的陷阱未捕获退出代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36356191/