Нужна помощь в реализации обработчика ошибок

Я пытаюсь реализовать обработчик ошибок. Это помощник, который проверяет наличие кода ошибки в переменной $? и завершает сценарий с кодом и сообщением.

Приведенный ниже код довольно прост и самоочевиден, но он не работает и Я вообще не понимаю, что происходит. Я пробовал передать $? в качестве аргумента этой функции, но это тоже не работает. Что мне не хватает?

#!/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

...
0
задан 5 December 2020 в 19:41

0 ответов

Другие вопросы по тегам:

Похожие вопросы: