Shell 函数
来源:互联网 发布:java 合并两个list 编辑:程序博客网 时间:2024/05/16 06:11
今天元旦,宅在家里,闲着看了看shell,下面将所学的分享一下。
在开始编写复杂的shell脚本时,有时候你会发现在编写很多重复的代码。bash shell支持用户定义的函数。可以将shell脚本的代码进行封装。方便以后多次使用和维护。
第二种方法,函数名和后面的小括号和大括号可以有空格也可以没有。不过建议在大括号写一个空格。
注意:再调用函数的时候,函数定义必须在调用之前定义。
This is a repeat of the hello function.
方式一:默认状态下,函数的退出状态码是函数中执行最后一条命令的退出状态码,可以用$?获取状态码。例如:
方式二:使用return。return命令允许指定一个数值作为函数的退出状态码。
输出结果:10
注意:退出状态码必须在0-255之间,如果返回值大于255,就会返回一个错误的值。要是返回较大的数值或者字符串,必须使用下面的方法了。
方法三:将函数的输出保存到shell变量中。这样我们就可以使用函数返回各种类型的值了。
在开始编写复杂的shell脚本时,有时候你会发现在编写很多重复的代码。bash shell支持用户定义的函数。可以将shell脚本的代码进行封装。方便以后多次使用和维护。
有两种方式可以创建bash shell的函数:
方式一:采用关键字function,后面跟着函数名称。例如:
#!/bin/bashfunction hello {echo This is hello function.}hello
输出结果:This is hello function.
注意: 方法与后面的大括号要有空格,不可以写成 Hello{ 这样是错误的。方式二:不实用function关键字。直接是方法的名字。例如:
#!/bin/bashhello() {echo This is hello function.}hello输出结果:This is hello function.
第二种方法,函数名和后面的小括号和大括号可以有空格也可以没有。不过建议在大括号写一个空格。
注意:再调用函数的时候,函数定义必须在调用之前定义。
如果在同一个shell中重复定义了一个函数,不会产生任何错误。后续使用该函数,都会使用第二个定义的函数。例如:
#!/bin/bashhello() {echo This is hello function.}hellohello() {echo This is a repeat of the hello function.}hello输出结果:This is hello function.
This is a repeat of the hello function.
上面的例子只是简单的函数,没有参数,没有返回值。
继续研究一下bash shell 如何获取函数退出状态码。可以说有三种返回值:方式一:默认状态下,函数的退出状态码是函数中执行最后一条命令的退出状态码,可以用$?获取状态码。例如:
#!/bin/bashtestReturn() {echo Hello}testReturnecho The exit status is $?输出结果:0
方式二:使用return。return命令允许指定一个数值作为函数的退出状态码。
#!/bin/bashtestReturn() {return 10}testReturnecho The exit status is $?
输出结果:10
注意:退出状态码必须在0-255之间,如果返回值大于255,就会返回一个错误的值。要是返回较大的数值或者字符串,必须使用下面的方法了。
方法三:将函数的输出保存到shell变量中。这样我们就可以使用函数返回各种类型的值了。
#!/bin/bashtestReturn() {echo Hello}result=`testReturn`echo $result输出结果:Hello
更多精彩文章尽在www.liguosong.com
0 0
- [shell]shell函数
- shell函数
- Shell 函数
- Shell 函数
- shell函数
- shell --函数
- shell 函数
- shell函数
- shell函数
- 【shell】函数
- shell 函数
- shell---函数
- Shell 函数
- shell函数
- shell 函数
- Shell 函数
- shell函数
- Shell 函数
- ARM7 Timer与DMA的register
- mac 10.9 虚拟机分辨率问题
- 网络分析,图挖掘常用数据集:dblp dataset,kdd dataset....
- 什么是I帧,P帧,B帧
- 8 Android gallery
- Shell 函数
- sprintf详解
- PHP_Filter过滤多个输入
- addr和offset指令的区别
- oracle字符集
- Path Sum
- Ext4.1.0 中文API文档已经全部翻译完成!
- 汽车租赁管理系统-期末项目
- 微信公众平台取代APP?开发者总结六大理由