1. ホーム
  2. bash

[解決済み] Bash関数の戻り値をテストする適切な方法は何ですか?

2023-06-24 19:12:49

質問

Bash関数の戻り値を もし ステートメントでテストしたい。

if [[ func arg ]] ; then …

でも、こんなエラーメッセージが出ます。 conditional binary operator expected.

正しい方法は何ですか?

次のようなものでしょうか?

 if [[ $(func arg) ]] ; then ...

どのように解決するのですか?

結果ではなく、終了コードであった場合、単に

if func arg; then ...

関数が適切な終了コードを返すようにできない場合は、( return N を使って)適切な終了コードを返すことができず、文字列の結果を使わなければならない場合は Alex Gitelmanの回答 .

$ 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 のリストが存在すれば、それが実行されます。 構成全体の終了ステータスは 構成全体の終了ステータスは、最後に実行されたコマンドの終了ステータスとなります。 または、どの条件も真と判定されなかった場合のゼロです。

<ブロッククオート

終了ステータス。 最後に実行されたコマンドのステータスを返します。