和其他编程语言一样,shell编程时也常常会把完成固定功能且需要多次使用的同一组功能封装到一个函数里,当需要使用该功能时只需调用该函数即可。
函数定义
函数具体定义格式如下:
特别说明:函数格式中的[],表示可选。即函数定义时关键字function可有可无,返回语句return可有可无,当有return时,其返回数值n(0-255),当无return时,将以最后一条命令运行结果为函数返回值。
函数调用
shell编程中,函数在被调用前必须先定义,即是函数定义必须在调用程序前面。shell函数的调用有如下两种格式:
格式一:
ret_value=`funname [arg1 arg2 …]`
格式二:
funname [arg1 arg2 …]
通过 $? 获取函数返回值
函数常用参数说明:
$num,表示第几个参数,如$1表示获取第一个参数值,当需注意,当num大于等于10时,必须使用${num}获取,即如要获取第10个参数,则写为${10}
$#,传递到当前函数的参数的个数
$*,以字符串形式显示所有向函数传递的参数
$?,显示最后命令的退出状态,0表示没有错误,其他任何值表示有错误。当函数有return存在时,表示函数返回值。
函数举例
编写如下shell函数add()
在终端运行命令及输出结果如下图所示:
从运行结果可以看出,$?只对上一条指令负责,一旦函数返回后其返回值没有立即入参数,那么其返回值将不能再通过$?获得。