Как отправить правильный код ошибки в ловушку - PullRequest
0 голосов
/ 03 апреля 2019

Если в моем скрипте возникает какая-то ошибка (> 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
...