函数返回值作用
在其他编程语言中,返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果可通过 return 语句返回。但Shell中返回值表示的是函数的退出状态:返回值 0 表示函数执行成功,非 0 表示函数执行失败。
if、while、for 等语句都是根据函数的退出状态来判断条件是否成立。
函数的退出状态码:
默认取决于函数中执行的最后一条命令的退出状态码。
自定义退出状态码,其格式为:
Shell 函数的返回值是一个介于 0~255 之间的整数,其中只有 0 表示成功。
函数执行失败时,可以根据返回值判断具体出现了什么错误,比如一个打开文件的函数,指定 1 表示文件不存在,2 表示文件没有读取权限,3 表示文件类型不对。
如果函数体中没有 return 语句,那么使用默认的退出状态,也就是最后一条命令的退出状态。也就是 return $?,$?是一个特殊变量,用来获取上一个命令的退出状态。
得到函数处理结果
return 表示退出状态,但想得到函数处理结果,可以两种解决方案:
- 一种是借助全局变量,将得到的结果赋值给全局变量;
- 一种是在函数内部使用 echo、printf 命令将结果输出,在函数外部使用$()或者``捕获结果。
下面我们具体来定义一个函数 getsum,计算从 m 加到 n 的和,并使用以上两种解决方案。
示例
- 通过全局变量
缺点: 1. 需要定义全局变量;2. 需要对应上函数里面的变量。
- 通过echo得到