我想知道应用程序是否在shell脚本中崩溃了。如果应用程序崩溃,退出代码是什么?
答案 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)。