GNU/Linux >> Linux の 問題 >  >> Linux

Linux の Bash 終了コードとは

終了コードとは

すべてのスクリプト、コマンド、またはバイナリは、リターン コードで終了します。この値は、特殊変数 $? で確認できます。 .戻りコードは数値であり、符号なし 8 ビット整数が使用されるため、0 から 255 までに制限されます。 -1 の値を使用すると、255 が返されます。各実行は、成功したかどうかにかかわらず、エラー メッセージを表示するか、サイレントに終了コードで終了します。例:

$ date ; echo $?
Sat Jan 18 08:06:07 IST 2020
0

ご覧のとおり、コマンドは問題なく実行されたため、終了コードは 0 です。では、これを試してみましょう:

$ wrngcmd ; echo $?
-bash: wrngcmd: command not found
127

意味のない一連の文字を入力したため、コマンドが見つかりませんでした。

予約済みの Bash 終了コード

コマンドの成功を示す終了コード「0」と同様に、bash にはさまざまな状況に対応する予約済みの終了コードがいくつかあります。したがって、理想的には、スクリプトで exit コマンドを使用していて、終了コードを指定する必要がある場合は、競合する結果が生じる可能性があるため、これらの予約済みの終了コードを使用しないでください。

終了コード番号 意味 コメント
1 一般的なエラーのキャッチオール 「var1 =1/0」とする 「ゼロ除算」やその他の許可されない操作などのその他のエラー
2 シェル組み込みの誤用 empty_function() {} キーワードまたはコマンドがありません
126 呼び出されたコマンドは実行できません /dev/null パーミッションに問題があるか、コマンドが実行可能ファイルではありません
127 「コマンドが見つかりません」 illegal_command $PATH またはタイプミスに問題がある可能性があります
128 終了する引数が無効です 出口 3.14159 exit は 0 ~ 255 の範囲の整数引数のみを取ります (最初の脚注を参照)
128+n 致命的なエラー信号「n」 kill -9 $PPID of script $? 137 (128 + 9) を返します
130 Control-C で終了するスクリプト Ctrl-C Control-C は致命的なエラー信号 2 (130 =128 + 2、上記参照) です
255* 終了ステータスが範囲外 出口 -1 exit は 0 ~ 255 の範囲の整数引数のみを取ります

例で終了コード「128 +n」を理解しましょう。以下に示すように、終わりのないループを実行します。

#!/bin/bash    
while true; do    
echo ${$}    
done

このスクリプトを実行すると、強制終了するか「CTRL + C」を実行するまで、同じ PID が無期限に出力されます。 「CTRL+C」を実行して、終了コードを確認してみましょう。

# sh test.sh
....
2582
2582
2582
2582
2582
2582
^C
geeklab$ echo $?
130

ご覧のとおり、終了コードは「128+2」、つまり 130 です。同様に、「kill -9」を使用してスクリプトを強制終了すると、終了コードは「128+9」、つまり 137 になります。その例も見てみましょう:

# sh test.sh
....
2582
2582
2582
...
# kill -9 [pid_of_script]
....
2602
2602
Killed: 9
geeklab$ echo $?
137


Linux
  1. Linux の DNS ネームサーバー タイプとは

  2. Linux に標準の終了ステータス コードはありますか?

  3. 最後の終了コードを含む Bash プロンプト

  1. bashスクリプトで set -e とはどういう意味ですか?

  2. Bashのコマンド置換への変数代入の終了コード

  3. Linux grep リターン コード

  1. Bashコマンドラインの終了コードがわかりやすく説明されています

  2. アプリケーションの終了コードを検索する方法は?

  3. Linux ホーム パーティション コード 8302 の目的は何ですか?