シェルスクリプトより「$?」という用語を見ました。これはどういう意味ですか?
答え1
$?
最後に実行された前景パイプの終了状態に展開されます。よりBash マニュアルの特殊パラメータセクション。
簡単に言えば最後のコマンドの終了状態だ。
答え2
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
後者の使用法はより速く、一時変数に対応するシェルの変数名前空間を汚染することはなく、一般的に人がより読みやすく「肯定的な論理」を使用することをお勧めします。つまり、ほとんどの場合、認識可能な否定文なしで条件文を作成することです。簡単です。使用が$?
大幅に削減されます。
答え3
$?
- 最後に実行されたコマンドの終了状態。
$0
- 現在のスクリプトのファイル名。
$#
- スクリプトに提供されるパラメーターの数。
$$
- 現在のシェルのプロセス番号。シェルスクリプトの場合、これを実行するプロセスID。
答え4
$?プロンプトが表示されたら、最後に実行されたコマンドの実行状況を提供します。値が「0」の場合、コマンド実行が成功したことを示し、「1」はコマンド実行が失敗したことを示します。