Если в моем скрипте возникает какая-то ошибка (> 0, а не 194), я хочу сделать вызов API и сообщить об этом. Но функция, которая должна вызываться ловушкой, не выполняется при тестировании с выходом 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. Но она также будет выполнена при выходе 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