下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页Linuxshell函数简介和使用方法
1.概述作为一个(嵌入式)(Linux)(工程师),肯定需要编写shell脚本进行一些自动化工作。刚好,我最近就有类似需求——一键交叉编译DDS。本着“编写漂亮代码的原则”,我用到了shell函数。
2.shell函数简介基本语法:
[func(ti)on]function_name[()]{dosomething[returnint;]}[function]:虽然这个关键字可以省略不写,我还是建议写上,方便阅读;
function_name:函数名称;
dosomething:函数体,实现函数的具体功能;
[returnint]:函数返回值,return是关键字,int为具体数值(0,1,2,…)。这个关键字也可以省略不写,这样函数将以最后一条命令运行的结果作为返回值。
注:带方括号的关键字可以省略。
3.使用方法因为脚本是从上到下顺序执行,所以,函数必须****先定义后使用;调用函数时只需函数名即可,不需要小括号。#!/bin/sh(te)st_funfunctiontest_fun(){echo"shellfunctiontest!"}test_fun执行结果:
4.函数参数定义函数后,在调用函数时可以向函数传入参数。和(编程)语言不同的是,shell中定义函数时无需声明参数,即带参数的函数定义还是原始的格式:
[function]function_name[()]{dosomething[returnint;]}向函数传入参数时只需在调用的位置直接输入参数即可,中间用空格隔开:
function_namearg1arg2arg3...4.1参数访问
在函数内部访问参数时使用的形式,n为1,2,3,4…
#!/bin/shfunctiontest_fun(){echo"arg1:${1}"echo"arg2:${2}"echo"arg3:${3}"echo"arg4:${4}"echo"argnum:$#"echo"${0}:${0}"}#调用函数test_fun"apple""pear""banana""(or)ange"
${0}:代表的是脚本的名称,和C语言main函数中的argv[0]意义相同。
$#:存储的是参数的个数。
""和**@都表示传递给函数的所有*参数的集合。没有被双引号包围时,这两个的值相同。如果被双引号包围,那么意义就不同了:
"$*"表示将所有的参数合并到一起,成为一个参数;
"$@"表示所有的参数仍然是分离的。
通过for循环就能看出区别:
#!/bin/shfunctiontest_fun(){echo"itemin$*"forvarin"$*"doecho"$var"doneecho"itemin$@"forvarin"$@"doecho"$var"done}
5.shift你可能会遇到这样的场景——在函数中,你只想使用后面的几个参数,忽略前面的参数。
这个时候就可以使用shift关键字了。
shiftn将全部参数向左移动n个位置,后面的参数移动到前面参数的位置,前面的参数被丢弃。比如shift2指令的最终结果是把原来的**{3}移动到{1}的位置,{4}移动到**{2}的位置…
#!/bin/shfunctiontest_fun(){echo"${1}:${1}"echo"${2}:${2}"echo"${3}:${3}"echo"${4}:${4}"shift1echo"aftershift1:"echo"${1}:${1}"echo"${2}:${2}"echo"${3}:${3}"}test_fun"apple""pear"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省孝感市应城市2024-2025学年八年级上学期期中数学试题(无答案)
- 【语文课件】地动仪课件
- 【语文课件】我最爱吃的水果
- 《广告我懂个P前传》课件
- 《Hela细胞传代培养》课件
- G业务网络技术培训课件
- 羊皮纸市场发展现状调查及供需格局分析预测报告
- 制图角板市场需求与消费特点分析
- 渡船产业规划专项研究报告
- 医疗器械和仪器市场发展现状调查及供需格局分析预测报告
- 2024江西吉安县政务服务大厅人员招聘11人笔试备考题库及答案解析
- 礼仪培训第一
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 人教版一年级上册数学第5单元《6-10的认识和加减法》试卷及答案
- 2024年中学生编程(图形化)竞赛试题
- DB11T 1213-2015 自来水单位产量能源消耗限额
- 2024-2025学年统编版七年级语文上册 第四单元 单元测试卷
- 从《论语》谈孔子的养生之道
- 爱我国防课件教学课件
- unit 4 I have a pen pal(单元测试)2024-2025学年人教PEP版英语六年级上册
- 2024秋国家开放大学《形势与政策》大作业参考答案 二
评论
0/150
提交评论