場合によっては、関数を実行して呼び出し元に返す必要がありますが、これは私にとって効果的です。
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; fi
c
に依存しないので、この点ではより安全ですb
。a
$ if [[ -f /etc/passwd ]];then { echo "file exists"; false; }; else echo "file does not exist"; fi
file exists
$ echo $?
1