some_script.sh とはどういう意味ですか? || Bashスクリプトで「メッセージ」とはどういう意味ですか?

some_script.sh とはどういう意味ですか? || Bashスクリプトで「メッセージ」とはどういう意味ですか?

Bashスクリプトの次の行は次のとおりです。

$GEN_SDK $GEN_SDK_FLAGS $OUT_DIR/toolchain || panic "Cannot generate SDK toolchain!"

実行すると競合が発生します。この行の論理は、最初の命令が正しく実行された場合、2番目の命令が評価されないことです。しかし、最初のコマンドが正しく機能することはどういう意味ですか?return trueバッシュにはそんなことはありません。では、正常に動作しないことをどのように理解できますか?

答え1

シェルでは、すべてのプロセスに終了コード(または戻りコード)があります。終了コードは、0エラーが発生しなかったことを意味するという点で「実際」です(プログラミング言語で通常期待されるのとは対照的に「0偽」です)。終了コードがなければ、bash構造がcommand || othercommand実行されます。これは、終了コードが次の場合にのみ同じです。othercommandcommand0command && othercommandothercommandcommand はい 0

試したい場合は、シェル拡張が前のコマンド$?の終了コードとして評価されます。

$ true; echo $?
0
$ false; echo $?
1
$ true || echo "Darned true."
$ false || echo "Lies."
Lies.

関連情報