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脚本函数返回值的三种方式的主要内容,如果未能解决你的问题,请参考以下文章

测试:python调用cmd命令三种方法

如何用Python交互执行shell脚本

C语言返回多个值的方法

js里常见的三种请求方式$.ajax$.post$.get分析

Shell编程------函数应用

每天三分钟搞定linux shell脚本26 函数返回值