回答:
$?
最後に実行されたフォアグラウンドパイプラインの終了ステータスに展開します。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
この後者の使用はより高速で、シェルの変数名前空間を一時変数に汚染せず、人間にとってはるかに読みやすいことが多く、「正論理」の使用を奨励します。ほとんどの状況でシンプル。$?
大部分の使用を廃止します。
$?
-最後に実行されたコマンドの終了ステータス。
$0
-現在のスクリプトのファイル名。
$#
-スクリプトに提供される引数の数。
$$
-現在のシェルのプロセス番号。シェルスクリプトの場合、これは実行中のプロセスIDです。
$?
実行されたコマンドの終了ステータスを決定します。$
(例えば、数字が続く$1
、$2
シェル・スクリプトのパラメータは、等)を表します。