bash函数始终返回true

时间:2019-02-18 14:58:09

标签: bash shell

我有一个shell脚本

function fun1(){
    return 0;
}

function fun2(){
    return 1;
}

if  fun1  && fun2  ;then 
echo "success"
else 
echo "failure"
fi

效果很好.. 我需要用双括号括起来。我正在尝试这样做。

if  [[ fun1 ]]  && [[ fun2 ]] ;then 
echo "success"
else 
echo "failure"
fi

但是无论函数的返回值如何,它总是返回成功。.

有人可以告诉我我要去哪里错吗? 但是如果使用o

1 个答案:

答案 0 :(得分:2)

if  fun1

表示使用函数fun1的结果就像使用条件一样。因此它按预期工作。

if  [[ fun1 ]]

使用[[ or [后,您将调用命令test(或针对test的新功能强大的命令[[),因此fun1将是test命令的参数。这样,您的检查将变为:“如果fun1不是空字符串”。因此,它始终返回true。