bas*_*sil 0 linux bash shell sh
我已经在BASH if-then语句中查看了句柄函数返回值的各种方法,但似乎都没有.这就是我所拥有的
function is_cloned()
{
if [ -d $DIR_NAME ]
then
return $SUCCESS
fi
return $FAILURE
}
Run Code Online (Sandbox Code Playgroud)
如果我自己调用它并检查返回值,它将起作用:
is_cloned
retval=$?
if [ $retval -eq $FAILURE ]
then
...
fi
Run Code Online (Sandbox Code Playgroud)
如何在if语句中使用函数调用?或者根本没有办法利用返回值?
ifBash中的语句可以直接使用函数的退出代码.所以你可以这样写:
if is_cloned
then
echo success
fi
Run Code Online (Sandbox Code Playgroud)
如果您想检查失败,就像在发布的代码中一样,您可以使用!运算符:
if ! is_cloned
then
echo failure
fi
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你的is_cloned功能也可以更多地依赖退出代码,你可以像这样写:
is_cloned() {
[ -d "$DIR_NAME" ]
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为函数的退出代码是最后执行的命令的退出代码,[ ... ]如果成功则退出代码为0,否则为非零(=失败).
还记得用双引号用作命令参数的变量名,就像我在DIR_NAME这里做的那样.