if else then ショートカットの条件として関数の戻り値を使用するには?

if else then ショートカットの条件として関数の戻り値を使用するには?

場合によっては、関数を実行して呼び出し元に返す必要がありますが、これは私にとって効果的です。

if tst; then
    echo "success"
else
    echo "failure"
fi

function tst () {
    return 0;
}

ただし、ショートカット構文を使用すると、これを行うことはできないようです。 if [[ tst = true ]]またはif it = "0"テストを含む、次のステートメントのさまざまな組み合わせを試しましたが、理解できませんでした。

[[ tst ]] && echo "success" || echo "failure"

bash短縮構文を使用してif条件で関数をテストする正しい方法は何ですか?

答え1

を使用すると仮定してA && B || C関数を直接呼び出すだけです。

tst && echo "success" || echo "failure"

以下を使用するには、終了値を使用する必要があります[[

tst
if [[ $? -eq 0 ]]
then 
    ...

答え2

(これは実際に答えではなく、より多くのコメントです)

a && b || cショートカットに注意する必要があります。

  • a成功が返されるとb実行
  • b後で終了ステータスが返されると、これもc実行されます。
$ [[ -f /etc/passwd ]] && { echo "file exists"; false; } || echo "file does not exist"
file exists
file does not exist

if a; then b; else c; ficに依存しないので、この点ではより安全ですba

$ if [[ -f /etc/passwd ]];then { echo "file exists"; false; }; else echo "file does not exist"; fi
file exists
$ echo $?
1

関連情報