北冥有鱼的Blog 2012-10-07
1. 函数定义
shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数
定义函数的格式:
function-name(){
command1
........
}
或functionfunction-name(){#函数名前面多了个function关键字
command1
........
}2.函数调用
以下是一个函数的脚本实例:
#!/bin/bash
#hello
functionhello(){#声明函数
echo"Hello!"#函数的主体,输出"Hello!"
}#函数结束
hello #调用函数3.参数传递
向函数传递参数就像在脚本是使用变量位置$1,$2,$3...$9
以下是一个传递参数的实例:
#!/bin/bash
#hellofun
functionhello(){
echo"Hello!Thefirstparameteris'$1'."
}
hellogood
#该脚本执行的结果是: Hello! The first parameter is 'good'.4.函数文件
保存函数的文件,用以上的例子写成一个函数文件如下:
#!/bin/bash
#hellofunction
functionhello(){
echo"Hello!"
return1
}
上面的hellofunction文件就是一个函数文件,可通过另一个脚本来调用
#!/bin/bash
#hellof
.hellofunction#注意点和hellofunction之间有个空格
hello5.载入和删除
用set查看已载入的函数
用unsetfunction-name取消载入
举例如下:
#!/bin/bash
#hellof
.hellofunction
unset
hello #因为已经取消载入。。所以会出错
6.从调用函数中返回
当函数完成处理或希望函数基于某一测试语句返回时,可做两种处理:
1) 让函数正常执行到函数末尾,然后返回脚本中调用函数的控制部分。
2) 使用r e t u r n返回脚本中函数调用的下一条语句,可以带返回值。0为无错误,1为有错误。
这是可选的,与最后状态命令报表例子极其类似。其格式为:
return从函数中返回, 用最后状态命令决定返回值。
return 0 无错误返回。
return 1 有错误返回
7.函数返回值测试
#!/bin/bash
#hellofun
functionhello(){
echo"Hello!Thefirstparameteris'$1'."
}
hello
echo $? #输出返回的状态值(一般成功是返回0,其它值为失败)