函数
函数可以将一个复杂的功能划分为若干模块,让程序结构更加清晰,代码重复利用率更高。Shell也支持函数。函数是Shell程序中执行特殊过程的部件,并可以在Shell脚本中重复调用。
1、函数的定义与调用
Shell函数必须先定义后使用,函数定义的格式如下:
[function] 函数名()
{
命令序列
[return 返回值]
}
其中关键字function可以缺省。函数返回值可以是显式增加return语句,如果不加该语句,则会将最后一条命令运行结果作为返回值。
调用函数只需要给出函数名,不需要加括号,就像一般命令那样使用。函数的调用形式如下:
形式如下:
函数名 参数1 参数2 ...参数n
参数是可选的。下面是一个简单的示例
#!/bin/bash
#定义函数
hello () {
echo "hello world!"
}
#调用函数
hello

2、函数返回值
Shell函数返回值只能是整数,一般用来表示函数执行成功与否。如果需要函数返回任意值,如字符串,可以采用以下几种方法。
1、使用全局变量
Shell函数并没有提供全局变量,所有函数都与其所在的父脚本共享变量。这样就可以先定义一个变量,用来接收函数的计算结果,脚本在需要的地方访问这个变量来获得函数的返回值。下面给出一个简单的函数返回值示例:
#!/bin/bash
#定义函数
hello () {
mystr='hello world!'
}
#调用函数
hello
#显示函数中赋值的变量
echo $mystr

这个方法可以让函数返回多个值,只需要使用多个全局变量。
2、在函数中使用标准输出
将一个Shell函数作为一个子程序调用(命令替换),将返回值写到子程序的标准输出,可以达到返回任意值的目的。下面是相关示例
#!/bin/bash
#定义函数
hello () {
#将一个值赋值给一个变量作为函数的返回值
mystr='hello world!'
#显示字符串
echo $mystr
}
#调用函数
result=$(hello)
#显示函数中赋值的变量
echo $result

3、在函数中使用return返回整数值
前面提到的$?是一个特殊的内部变量,可用于获取上一个命令的返回结果,可以直接通过函数return语句来接收返回值。下面为一个相关示例:
#!/bin/bash
addnum () {
#将两个参数值的和赋给变量
val=`expr $1 + $2`
#使用return将变量值返回
return $val
}
#调用函数
addnum 4 5
#获取函数返回值
ret=$?
echo "两个数的和为:$ret !"

3、函数参数
在Shell中调用函数时可以向其传递参数。与脚本一样,在函数体内不也是通过$n的形式来获取参数的值,例如$1表示第一个参数,$2表示第二个参数,在函数体内部也是通过$n的形式来获取参数的值的,例如,$1表示第一个参数,$2表示第二个参数。

浙公网安备 33010602011771号