shell脚本函数返回值的三种方式
Posted 零君聊软件
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本函数返回值的三种方式相关的知识,希望对你有一定的参考价值。
在高级语言中,一个函数的返回值用关键字return直接返回即可,例如下面的Java函数,
public int add(int a, int b) {
return a+b;
}
调用此函数时,可以直接将函数的返回值赋给一个变量,例如:
int sum = obj.add(1, 2)
然后shell脚本中的函数却不能用return返回值,这是很多新手很容易犯的错误。一些经验很丰富的工程师有时也会犯这种错误。总的来说,shell脚本函数返回值有三种方式,下面一一说明。
用echo将返回值输出到stdout
用echo将需要返回的值输出到stdout(标准输出),然后函数的调用者从stdout读取返回值即可。例如:
testfunc1(){
echo "hello"
}
val=$(testfunc1)
echo "$val"
或者用下面的方式调用函数也可以,
val=`testfunc1`
echo "$val"
用return返回状态码
在shell函数中,可以用return返回一个数值,表示函数执行结束的退出状态码。函数的调用者应该用$?来获取该状态码的具体值。例如:
testfunc2(){
return 2
}
testfunc2
retval=$?
if [ "$retval" -eq 0 ]; then
echo "Successful"
else
echo "Failed, status: ${retval}"
fi
注意,千万不要用下面的方式来获取return返回的值,因为这么干会被鄙视的。
retval=$(testfunc2)
一个通常的用法如下,意思是如果testfunc2执行的退出状态码非0,则直接退出。
testfunc2 || exit 1
通过共享变量
通过共享变量也可以将函数的执行结果传递到函数外。例如下面的例子,就是通过变量retval来传递函数的结算结果,
retval=1
testfunc3(){
retval=4
}
testfunc3
echo "$retval"
--END--
以上是关于shell脚本函数返回值的三种方式的主要内容,如果未能解决你的问题,请参考以下文章