如何使用函数 return 作为 if else then 快捷方式的条件?

如何使用函数 return 作为 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; fi在这方面更安全,因为c不依赖于b,仅a

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

相关内容