Linux shell函数返回值

Thu Jun 11 15:05:56 CST 2015 938 Linux

文章摘要Linux shell脚本也支持函数。在其他大部分语言中,函数支持返回值,那么shell里的返回值是怎样的呢?

Linux shell中函数返回值的方式主要有三种:

  1. return语句,return返回的只能是整数。

  2. echo标准输出流返回

  3. 通过修改全局变量返回


本文主要介绍第二种,使用echo返回


ctrl+alt+t打开终端,vi test.sh,i/a输入如下shell脚本:

#!/bin/sh
function func()
{
        echo $(($1+$2)) 
}

declare -i num1 num2
read -p 'input a number:' num1
read -p 'input a number again:' num2
result=$(func $num1 $num2)
echo $result

Esc->:wq保存退出


执行bash test.sh命令,分别输入两个整数1和2,终端显示如下:

input a number:1
input a number again:2
3


上面代码中,语句

result=$(func $num1 $num2)

将函数func的标准输出流接到主程序的result变量中。这就相当于在函数func中用echo往标准输出流里写东西,然后返回给result。


也许有人会问,这个3会不会是在函数func里echo直接输出的呢?那么我们执行bash -x test.sh命令,跟踪脚本执行情况

+ declare -i num1 num2
+ read -p 'input a number:' num1
input a number:1
+ read -p 'input a number again:' num2
input a number again:2
++ func 1 2
++ echo 3
+ result=3
+ echo 3
3

可以看见,输出结果的3的确是在主程序里result=3语句之后的echo输出的。





打赏
打赏

分享到:




shell脚本declare关键字not found问题