Linux shell函数简介和使用方法_第1页
Linux shell函数简介和使用方法_第2页
Linux shell函数简介和使用方法_第3页
Linux shell函数简介和使用方法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论