如何提交正确的错误代码以进行陷阱

时间:2019-04-03 08:27:52

标签: bash error-handling trap

如果我的脚本中发生了一些错误(> 0而不是194),我想进行API调用并报告它。但是应该由trap触发的功能在退出1进行测试时不会执行。

我希望函数createIncidentOnErr得到执行。但是脚本会立即退出。

#!/bin/bash
set -e
function createIncidentOnErr (){
echo "some api call"
}

trap 'if [ $? -ne 194 ]; then createIncidentOnErr;' ERR
function checkOS (){
exit 1
}
checkOS

我也尝试了这种替代方法,并期望如果exit不为0则执行该替代方法。但是它也将在exit 0处执行。

#!/bin/bash
set -e

function createIncidentOnErr (){
echo 'exit because of errorcode '"$?"'. do some api call'
}

trap 'if [[ $? -ne 0 || $? -ne 194 ]]; then createIncidentOnErr; fi;' EXIT

function checkOS (){
exit 0
}
checkOS

这是上述代码的结果:

bash -x ./test.sh
+ set -e
+ trap 'if [[ $? -ne 0 || $? -ne 194 ]]; then createIncidentOnErr; fi;' EXIT
+ checkOS
+ exit 0
+ [[ 0 -ne 0 ]]
+ [[ 0 -ne 194 ]]
+ createIncidentOnErr
+ echo 'exit because of errorcode 0. do some api call'
exit because of errorcode 0. do some api call

0 个答案:

没有答案