1つのシェルスクリプトを実行すると、「$?」という用語が表示されました。この用語の意味は何ですか?
$?
は、最後に実行されたフォアグラウンドパイプラインの終了ステータスに展開されます。 Bashマニュアルの特別なパラメータのセクション を参照してください。
簡単に言えば、それは最後のコマンドの終了ステータスです。
Cjmの答え は正しいですが、$?
はシェルスクリプトで馬鹿げた方法で使用できます。警告します。悪いシェルスクリプトの多くには、繰り返しコードのパターンがあります。
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
可能であれば(読みやすさの懸念が侵入する場合)、この状況を別の方法でコーディングする必要があります。
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
この後者の使用法はより速く、一時変数に相当する量でシェルの変数の名前空間を汚染せず、多くの場合人間にとってより読みやすく、「肯定的な論理」の使用を奨励します。ほとんどの状況でシンプル。ほとんどの場合、$?
を使用しないでください。
cjmの発言 に加えて、$?
が0の場合、前のプロセスは正常に(または正常に)終了しました。そうでない場合、エラーが発生しました。
$?
-最後に実行されたコマンドの終了ステータス。
$0
-現在のスクリプトのファイル名。
$#
-スクリプトに提供される引数の数。
$$
-現在のシェルのプロセス番号。シェルスクリプトの場合、これはスクリプトが実行されているプロセスIDです。
$?プロンプトの最後の実行コマンドの実行ステータスを提供します。値「0」はコマンドが正常に実行されたことを示し、「1」は失敗したことを示します。