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/

10-10 18:14