Linux  shell  使用函数
与使用其他编程语言类似,shell程序也支持函数。shell允许将一组命令集或者一行语句形式一个可用块,这些块被称为shell函数。函数是完成特定处理功能的一个shell程序;在shell程序内部可以重复使用同一函数多次。在编写shell程序时,使用函数有助于消除重复代码和组织整个程序。
函数由函数标题和函数体两部分组成。标题是函数名;函数体是指函数内的命令集合。函数名称应当是惟一的,不可以重复。在bash shell中,函数的语法格式为:
函数名() {
    statements
}
或者
函数名 ()
{
    statements
}
两种形式都可以。另外,也可以使用如下所示的形式:
linux shell编程求和function 函数名 ()
{
    statements
}
可以根据自己的爱好和习惯选用任一种。函数可以放在一个文件中作为一段代码,也可以单独放在一个文件中。调用函数的格式为:
functionName param1 param2 param3 ...
参数param1、param2等是可选的。可以将参数作为一个串进行传递,例如$@。函数可以分析参数,就如同它们是从命令行上作为命令行参数传递给shell程序的位置参数一样,但是函数使用传递到脚本内的值。例如,下面的shell脚本使用了函数showmonth(),该函数用于显示月份的名称,若向其传递的月份数超出了1到12的范围,则显示一个出错提示信息:
#!/bin/bash
showmonth() {
case $1 in
    01 | 1) echo "Month is January";;
    02 | 2) echo "Month is February";;
    03 | 3) echo "Month is March";;
    04 | 4) echo "Month is April";;
    05 | 5) echo "Month is May";;
    06 | 6) echo "Month is June";;
    07 | 7) echo "Month is July";;
    08 | 8) echo "Month is August";;
    09 | 9) echo "Month is September";;
    10) echo "Month is October";;
    11) echo "Month is November";;
    12) echo "Month is December";;
    *) echo "Invalid parameter";;
esac
}
showmonth 13
showmonth 4
showmonth 9
该程序在执行时并未在命令行上给出参数,因为在脚本内,已经为函数传递了相应的参数,执行结果如图21所示。
图21  使用函数
向函数传递参数就像在一般脚本中使用特殊变量$1、$2...一样,函数取得所传参数后,将原始参数传回shell脚本,因而最好先在函数内设置变量保存所传的参数。当函数完成处理或者希望函数基于某一测试语句返回时,可做两种处理:
让函数正常执行到函数末尾,然后返回脚本中调用函数的控制部分
使用return语句返回脚本中函数调用的下一条语句,可以带返回值,0表示无错误,1表示有错误。
shell中的函数把若干命令集合到一起,通过一个函数名加以调用。如果需要,还可以调用多次。执行函数并不创建新的进程,而是通过shell进程执行。通常,函数中的最后一个命令执行之后,就退出被调函数。也可利用return命令立即退出函数,其语法格式为:
return [n]
其中,n值是退出函数时的退出值(退出状态),即$?的值。当n值为默认值时,退出值就是最后一个命令执行后的返回值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。