我已经在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语句中使用函数调用?或者根本没有办法利用返回值?
答案 0 :(得分:7)
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
一样。