版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章Shell函数8.1函数的定义当你的脚本大到一定程度时,使用函数的优点是显而易见的,接下来就让我们学习如何定义一个函数。定义函数的语法如下所示:#函数名function_name(){
#函数体,在函数中执行的命令行commands… #参数返回,return语句是可选的。如果没有return语句,则以函数最后一条命令的运行结果作为返回值;若果使用return语句,则return后跟数值n(数值范围:0~255)[returnint;]
}8.1函数的定义或者,如果愿意,可在函数名前加上关键字function,这取决于读者的偏好和习惯。functionfunction_name(){
commands…
}如果有function关键字,则可以省略圆括号“()”。函数体,也叫复合命令块,是包含在{}之间的命令列表。也可以在一行内定义一个函数,此时,函数体内的各命令之间必须用分号“;”隔开,其语法规则如下:functionname{command1;command2;commandN;}或者name(){command1;command2;commandN;}可以使用内部命令unset的“-f”选项来取消函数的定义。8.2函数的参数、变量与返回值8.2.1实例:向函数传递参数Shell函数有自己的命令行参数。函数使用特殊变量$1,$2,..$n(本书5.4.3节所讲述的Bash的位置参数)来访问传递给它的参数。函数中使用参数的语法规则如下:name(){
arg1=$1arg2=$2commandon$arg1
}使用如下语法来调用函数:namefoobar在这里,name=函数名foo=参数1:传递给函数的第一个参数(位置参数$1)bar=参数2:传递给函数的第二个参数(位置参数$2)8.2.2本地变量默认情况下脚本中所有变量都是全局的,在函数中修改一个变量将改变这个脚本中此变量的值,这在某些情况下这可能是个问题8.2.2本地变量我们可以使用local命令来创建一个本地变量,其语法如下所示:localvar=valuelocalvarName或者functionname(){
#定义一个本地变量varlocalvar=$1command1on$var
}local命令只能在函数内部使用。local命令将变量名的可见范围限制在函数内部。8.2.3实例:使用return命令如果在函数里有Shell内置命令return,则函数执行到return语句结束,并且返回到Shell脚本中调用函数位置的下一个命令。如果return带有一个数值型参数,则这个参数就是函数的返回值,返回值的最大值是255;否则,函数的返回值是函数体内最后一个执行的命令的返回状态。8.2.4实例:函数返回值测试可以直接在脚本调用函数语句的后面使用Shell特殊参数“?”来测试函数调用的返回值,通过特殊参数“?”可以得到最近一次执行的前台命令的退出状态。或者也可以使用if语句测试函数返回值。建议在if语句里用括号将函数调用括起来以增加可读性。8.3函数的调用8.3.1实例:在Shell命令行调用函数在命令行中,可以通过直接输入函数的名字,来调用或引用函数:$function_name例如,定义一个叫做yday()的函数来显示昨天的日期:$yday(){date--date='1dayago';}引用函数yday():$yday8.3.2实例:在脚本中调用函数要在脚本中调用函数,首先要创建函数,并确保它位于调用此函数的语句之前。要在脚本的开头定义和编写函数。同样地,在脚本的开头定义所有变量。8.3.3实例:从函数文件中调用函数你可以把你所有的函数存储在一个函数文件中。你可以把所有的函数加载到你的当前脚本或是命令行。加载函数文件中所有函数的语法如下:./path/to/your/functions.sh8.3.4实例:递归函数调用递归函数是重复调用其自身的函数,并且没有递归调用次数的限制。8.4实例:将函数放在后台运行“&”操作符可以将命令放在后台运行并释放你的终端,你同样可以把函数放在后台运行。8.5小结通过本章的学习,想
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023三年级语文下册 第二单元 口语交际:该不该实行班干部轮流制配套教学实录 新人教版
- 2024工程技术人员临时支援协议3篇
- 2024版医疗器械产品设计与开发合同5篇
- 2024年度暑假学生工派遣与就业指导培训服务合同3篇
- 2024年度农业科技项目研发与合作合同6篇
- 2024年度软件许可合同中软件的功能和性能要求3篇
- 2024事业单位保密协议书范本与保密信息安全管理3篇
- 临沂科技职业学院《建筑工程造价实训》2023-2024学年第一学期期末试卷
- 2024年度智能小区电工劳务分包合同模板2篇
- 临沂大学《计算软件》2023-2024学年第一学期期末试卷
- 4D厨房设备设施管理责任卡
- GB/T 5593-2015电子元器件结构陶瓷材料
- GB/T 3871.6-1993农业轮式和履带拖拉机试验方法第6部分制动试验
- GB/T 22844-2009配套床上用品
- GB/T 1962.2-2001注射器、注射针及其他医疗器械6%(鲁尔)圆锥接头第2部分:锁定接头
- GB/T 17646-2013小型风力发电机组设计要求
- 中医拔罐技术试题及答案
- 2023年苏教版小学数学全套教材内容安排表
- 灭火器验收表
- 装修工程竣工验收报告(7篇)
- 商务沟通-课件
评论
0/150
提交评论