Shell 函数返回值

1 语法上的返回值

Shell函数返回值不同于很多语言的返回值。

Shell函数返回值:表示退出状态码,只能返回0~255之间的整数。

返回值的正规用途:表示这条命令是执行成功,还是执行失败。执行成功返回0,执行失败返回非0值。

通常,我们不返回值,会自动返回0,表示执行成功。


什么时候需要表示执行失败?

Shell用退出状态码的常用场景:if条件、 语句&& 、语句|| 。如果我们函数用于这些场景,才会去设置返回值。


查看返回值(退出状态码)

$? 返回上一条语句(命令)的退出状态码。

function f6(){
    return 100
}
 
f6
#查看返回状态码
echo $?
f6 && echo "666666"
 
if `f6` ;then
    echo "条件成立"
else
    echo "条件不成立"
fi
echo end

img

将上述代码返回值改为0,或者去掉return这一句,再执行。

img


2 业务返回值

比如:求和,要返回和;返回一个提示信息的字符串给调用方。

这类返回值,我们称之为业务返回值,不要通过return来传递,严重不规范。

Shell语言没有正式语法来实现返回业务返回值,曲线救国。


方法1:在Shell文件定义一个全局变量,函数内部修改全局变量,调用方访问这个全局变量。

缺陷:除了记函数名,还要记一个额外的全局变量名。


方法2:返回值通过echo打印,调用函数后通过``来执行命令替换。

#业务返回1个字符串
f1(){
    echo "网站地址:www.xiaobuteach.com"
}

a=`f1`
echo $a

img

缺陷:只有返回值能echo,其它内容不要echo;如果是要调试,可借助其它手段看调试信息,例如输出到文件。

优点:知道函数名就能使用。