崩溃时退出代码

时间:2011-03-27 18:24:26

标签: shell unix

我想知道应用程序是否在shell脚本中崩溃了。如果应用程序崩溃,退出代码是什么?

4 个答案:

答案 0 :(得分:2)

除0以外的任何内容都表示错误。错误值范围为1-255。使用$?检查它们。

有一些例外,但成功的0是* nix上的事实上的标准。

答案 1 :(得分:2)

通常,当没有出错时,返回码为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 :(得分:2)

应用程序的退出代码将位于shell变量 $?中。如果您的应用程序崩溃,即操作系统判定它已经做了坏事,并导致它终止(向它发送信号),那么这将反映在退出状态 $?

这是我使用的一个简单函数(在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
}

希望你觉得它很有用。

答案 3 :(得分:-1)

您的问题似乎this is an answer。这里的代码片段表明答案取决于操作系统(包括Windows)。