11.1、函数创建
11.1.1 方式1
function name{commands},其中function为关键字,name为函数名,commands为函数体。
11.1.2 方式2
name(){commands},其中name为函数名,()表明是在定义函数,commands为函数体。
11.2、函数使用
funName para1 para2...,其中funName是函数名,para1 para2等是参数。
函数必须首先定义,然后才能使用。
函数可以重复定义,后面的定义将覆盖前面的定义。
11.3、返回值
默认情况下,函数的退出状态是最后一条命令的退出状态。
return returnValue,其中return是关键字,returnValue是返回值,returnValue取值范围0~255。使用$?获得函数返回值,注意,必须在函数退出后立刻获得,否则执行其他语句后该返回值就丢失了。
通过echo返回值。这样可以返回浮点数和字符。
11.4、使用变量
11.4.1 向函数传递变量
funName para1 para2...,其中funName是函数名,para1 para2等是参数。在函数体中,$#表示参数数量,$1表示para1,$2表示para2,依次类推。
11.4.2 全局变量和局部变量
局部变量:local var="value",使用关键字local定义的就是局部变量,该变量只能在函数体内使用;否则,就是全局变量,可以在脚本内使用。
11.4.3 向函数传递数组
funName ${array[*]}
在函数体内:
newarray=(`echo "$@"`)来使用数组
11.4.4 从函数返回数组
在函数体内:
echo ${array[*]}
在脚本内:
newarray=(`funName para1 para2...`)来使用数组
11.5 递归函数
function fac{
if [ $1 -eq 1 ] then
echo 1
else
local tmp=$[ $1 -1 ]
local result=`fac $tmp`
echo $[ $result * $1 ]
fi
}
11.6 创建库
在一个文件中定义函数,然后再另一个文件中使用。
. 函数定义文件路径,.号表示导入该文件。
source 文件路径,与上述功能相同。
11.7 在命令行中使用函数
可以在命令行中直接使用函数,或者在.bashrc中定义或导入函数,这样每一个shell都可以使用这些函数。