код выхода при сбое - PullRequest
       2

код выхода при сбое

2 голосов
/ 27 марта 2011

Я хотел бы знать, было ли сбой приложения или нет из сценария оболочки.Каким будет код выхода в случае сбоя приложения?

Ответы [ 4 ]

2 голосов
/ 27 марта 2011

Обычно код возврата равен 0, когда ничего не пошло не так.Вы можете проверить код возврата с помощью $?

  fab@susi:~$ badCommand  
  badCommand: command not found  
  fab@susi:~$   
  fab@susi:~$ echo $?  
  127  
  fab@susi:~$   
  fab@susi:~$ whoami  
  fab  
  fab@susi:~$   
  fab@susi:~$ echo $?  
  0  
  fab@susi:~$
2 голосов
/ 28 марта 2011

Код выхода приложения будет находиться в переменной оболочки $? .Если ваше приложение падает, то есть операционная система решает, что оно совершило что-то плохое, и вызывает его завершение (посылает сигнал), то это отражается в состоянии выхода $? .

Вот простая функция, которую я использую (в bash я установил ее как переменную PROMPT_COMMAND), put выполняет некоторое декодирование состояния выхода

check_exit_status () 
{ 
    local status="$?";
    local msg="";
    local signal="";
    if [ ${status} -ne 0 ]; then
        if [ $((${status} < 128)) -ne 0 ]; then
            msg="exit (${status})";
        else
            signal="$(builtin kill -l $((${status} - 128)) 2>/dev/null)";
            if [ "$signal" ]; then
                msg="kill -$signal$msg";
            fi;
        fi;
        echo "[${status} => ${msg}]" 1>&2;
    fi;
    return 0
}

Надеюсь, вы найдете его полезным.

2 голосов
/ 27 марта 2011

Все, кроме 0, указывает на ошибку. Значения ошибок варьируются от 1-255. Проверьте их с помощью $?.

Есть некоторые исключения из этого, но 0 для успеха является стандартом де-факто для * nix.

0 голосов
/ 07 апреля 2011

Кажется это ответ на ваш вопрос.Фрагмент кода показывает, что ответ зависит от операционной системы (включая Windows).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...