Я пытаюсь реализовать обработчик ошибок. Это помощник, который проверяет наличие кода ошибки в переменной $?
и завершает сценарий с кодом и сообщением.
Приведенный ниже код довольно прост и самоочевиден, но он не работает и Я вообще не понимаю, что происходит. Я пробовал передать $?
в качестве аргумента этой функции, но это тоже не работает. Что мне не хватает?
#!/bin/bash
#this line causes error "asd: command not found"
asd
exit_if_error () {
ERROR_STATUS="$1"
ERROR_TEXT="$2"
if [ "$?" != "0" ]; then
# prints an error message on standard error and terminates the script with an exit status
echo "$ERROR_TEXT" 1>&2
exit "$ERROR_STATUS"
fi
}
exit_if_error "1" "Something bad happened"
echo "No errors during execution"
Это тоже не работает
#!/bin/bash
#this line causes error "asd: command not found"
asd
exit_if_error () {
ERROR="$1"
ERROR_STATUS="$2"
ERROR_TEXT="$3"
if [ "$ERROR" != "0" ]; then
# prints an error message on standard error and terminates the script with an exit status of 1
echo "$ERROR_TEXT" 1>&2
exit "$ERROR_STATUS"
fi
}
exit_if_error "$?" "1" "Something bad happened"
echo "No errors during execution"
Как вы обрабатываете ошибки в своих скриптах? Вы пишете подобный код? Я просто пытаюсь найти менее подробное решение.
command_a
if [ "$?" != "0" ]; then
echo "command_a failed..." 1>&2
exit 1
fi
command_b
if [ "$?" != "0" ]; then
echo "command_b failed..." 1>&2
exit 1
fi
...