bash if文は常にゼロを返しますか?常にゼロを返す場合はbashを実行しますか?
私は
$ if false; then echo hi; fi;
$ echo $?
を試してみましたが、それはそれのように思えます。 help if
から
bash if文は常にゼロを返しますか?常にゼロを返す場合はbashを実行しますか?
私は
$ if false; then echo hi; fi;
$ echo $?
を試してみましたが、それはそれのように思えます。 help if
から
:
if
:if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
条件に基づいてコマンドを実行します。
if COMMANDS
リストが実行されます。終了ステータスが0の場合、then COMMANDS
のリストが実行されます。そうでなければ、elif COMMANDS
のリストはそれぞれ であり、終了ステータスが0の場合、対応するthen COMMANDS
リストが実行され、ifコマンドが完了します。そうでない場合は、else COMMANDS
のリストが実行されます。何の条件が真でテストされなかった場合 構築物全体の終了ステータスは最後に実行されたコマンドの終了ステータスである、またはゼロ 。終了ステータス: 実行された最後のコマンドのステータスを返します。
(強調や書式鉱山)。
何else
部分がありません場合は、コマンドが非ゼロのコードで終了をテストするのであれば、戻りコードは0です
(しかし、声明bashのある文は、常にゼロを返す場合です上記に含まれるhelp if
の強調部分に記載されているように、false)。
*最後に実行されたコマンドの終了ステータス*であるため、ゼロを返さない可能性があります。 ls存在しないファイル。 '' echo $? 'は '1'を返します。 – cdarke
@cdarke:私は、誰かがこの上で議論するつもりだったと確信していたので、私は私が 'ヘルプif'を言い換えた実現するまで、ノートを含めるように答えを編集し始めました。だから私は、読者が私が含んでいた 'help if'コンテンツを実際に読むことを望んで、編集をキャンセルしました。 –
@cdarke、特に強調したコンテンツ:***構築物全体の終了ステータスは最後のコマンドの終了ステータスが実行され、*** **またはゼロ全く条件が真のテストない場合** –
シンプルな反例: '場合はtrue;それから偽。 fi' – chepner