testttt(){
echo after trapp
}
test(){
echo inside testcode
exit 2
}
trap 'testttt' 2
test
当我运行脚本时,我得到了输出 ->内部测试代码 但我期待 ->内部测试代码 在特拉普之后 为什么 trap '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/