BASH if语句中的函数返回值

时间:2017-10-11 17:19:12

标签: linux bash shell sh

我已经在BASH if-then语句中查看了处理函数返回值的各种方法,但似乎没有工作。这就是我所拥有的

 function is_cloned()
 {
      if [ -d $DIR_NAME ]
      then
           return $SUCCESS
      fi
      return $FAILURE
 }

如果我自己调用它并检查返回值,它将起作用:

 is_cloned
 retval=$?
 if [ $retval -eq $FAILURE ] 
 then
      ...
 fi

如何在if语句中使用函数调用?或者根本没有办法利用返回值?

1 个答案:

答案 0 :(得分:7)

Bash中的

if语句可以直接使用函数的退出代码。 所以你可以这样写:

if is_cloned
then
    echo success
fi

如果您想检查失败,就像在发布的代码中一样,您可以使用!运算符:

if ! is_cloned
then
    echo failure
fi

顺便说一句,您的is_cloned功能也可以更多地依赖退出代码, 你可以这样写:

is_cloned() {
    [ -d "$DIR_NAME" ]
}

这样可行,因为函数的退出代码是上次执行的命令的退出代码, 如果成功,则[ ... ]的退出代码为0,否则为非零(=失败)。

还要记得双引号用作命令参数的变量名, 就像我在这里做DIR_NAME一样。

相关问题