函数的作用是把一个复杂功能划分成若干模块,使程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,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返回值与其它语言有较大区别,尤其需要注意。