コマンドベースのif文

コマンドベースのif文

ifコマンドの実行方法は次のとおりです。

$if echo test | grep st ; then echo yes ; fi ; echo $?
test
yes
0

よさそうだね不一致で試してみましょう。

$if echo test | grep 123 ; then echo yes ; fi ; echo $?
0

そうではありません。ステートメントはif正常に実行されますが、ゼロ終了コードを返します。

誰かが私にこれを説明できますか?

ベストアンサー1

$?afterifブロックにはステートメントの終了ステータスが含まれていますif。基準指定する

コマンドの終了状態はまたはif終了状態でなければなりません。thenelse 化合物一覧実行されているか、実行されていない場合は0です。

最初の場合は、コマンドの終了ステータスが表示されますecho yes。 2番目の場合、thenまたはブロックelseでコマンドが実行されないため、終了ステータスは0です。

おすすめ記事