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
終了状態でなければなりません。then
else
化合物一覧実行されているか、実行されていない場合は0です。
最初の場合は、コマンドの終了ステータスが表示されますecho yes
。 2番目の場合、then
またはブロックelse
でコマンドが実行されないため、終了ステータスは0です。