首页 >> 学习 >> Shell脚本编程基础 >> 函数
函数

本节重要性:★★★★☆    本节难度:★★★☆☆

函数的作用是把一个复杂功能划分成若干模块,使程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell也支持函数。shell脚本是逐行运行,不像编译语言(如C语言)一样预先编译,因此Shell函数必须先定义后使用。

Shell函数的一般格式为:

[function] function_name () {
    command list
    [return value]
}

函数名前面的function可以省略,return的返回值只能是非负整数,如果省略return,则函数的返回值是最后一条命令的执行状态(正确执行是0,执行出错大于0)。

下面是一个Shell函数的例子:

[peter@ibi98 function]$ cat sum.sh
#!/bin/bash
sum(){
        echo $(($1+$2))
}
echo -n "sum of 1 and 2 is: "
sum 1 2
echo -n "sum of 2 and 3 is: "
sum 2 3
[peter@ibi98 function]$ sh sum.sh
sum of 1 and 2 is: 3
sum of 2 and 3 is: 5

Shell函数的参数传递类似于Shell命令行参数,在函数内部也是利用位置变量来引用函数参数。上例中,函数sum的作用是求两个数的和并返回,注意这里用echo返回执行结果。return也可以返回函数执行结果,但用return返回的结果需要在执行该函数的语句后面使用$?来引用。上面的例子如果用return返回函数执行结果可改写为:

[peter@ibi98 function]$ cat sum.sh
#!/bin/bash
sum(){
        return $(($1+$2))
}
echo -n "sum of 1 and 2 is: "
sum 1 2
echo $?
echo -n "sum of 2 and 3 is: "
sum 2 3
echo $?

执行结果与使用echo返回函数值是一样的。另外,如果函数的返回值不是非负整数(如字符串)的话,只能用echo,return只能返回大于等于0的数字。

Shell函数的参数传递方式使用return返回值与其它语言有较大区别,尤其需要注意。

<<上一节  下一节>>