版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西经贸职业学院单招综合素质笔试备考题库附答案详解
- 2026年曲阜远东职业技术学院单招综合素质考试备考题库附答案详解
- 2026年九江理工职业学院单招综合素质笔试参考题库附答案详解
- 2026年萍乡卫生职业学院单招综合素质笔试备考题库附答案详解
- 2026年江苏护理职业学院单招综合素质笔试参考题库附答案详解
- 2026年闽江师范高等专科学校单招综合素质考试模拟试题附答案详解
- 数学对称图形在数据可视化中的应用策略课题报告教学研究课题报告
- 2025年家政服务人员职业化发展趋势报告
- 2026年内蒙古北方职业技术学院单招综合素质笔试参考题库附答案详解
- 2026年东营职业学院单招综合素质笔试备考试题附答案详解
- 土地复垦项目施工组织设计方案书
- 民航旅客运输(第二版) 课件 模块3-国际航空旅客运价基础
- 4S店服务提升改善方案
- 高职院校五年一贯制人才培养模式研究
- 10.1 国家利益高于一切(课件)- 2025-2026学年八年级道德与法治上册(统编版2024)
- JJF(石化)003-2023腻子膜柔韧性测定仪校准规范
- 浙江东海新材料科技股份有限公司新建年产15000吨TDM项目环评报告
- 液压机械设备供货安装调试方案措施
- 高标准农田建设内容培训
- 玄隐遗密(含黄帝内经)
- 大学校园网网络设计及规划方案
评论
0/150
提交评论