Shell中的函数
一、在脚本中定义函数
与变量一样,在使用函数之前应该对函数进行定义。与其他编程类语言相比,由于没有数据类型的概念,因此也不必定义函数的类型。
(1)在脚本中可以使用以下方式定义函数:
function_name()
{
语句1
语句2
...
}
(2)有时为了便于阅读,也可以使用以下方式定义函数:
function function_name()
{
语句1
语句2
...
}
在上面这种方式中,使用了关键字function定义函数。这种方式有助于提高代码的可读性,因此建议使用这种方式定义函数。
【函数的命名约定】
- 为了区别变量,建议所有函数名都有小写字母和下划线组成,并以字母开头。
- 不要使用命令作为函数名称。
- 不要在函数名中使用特殊字符。
- 函数名应该尽量体现其功能。
除此之外,尽量不要在函数名中使用数字、有特殊意义的字符(例如true、false、return)、标点符号等。
二、在脚本中使用函数
在脚本中定义了函数后,下一步就是在脚本中调用函数执行特定的功能,可以在脚本中使用函数名直接调用函数。
函数定义和调用的简单示例:
[root@localhost shell]# cat func_exam.sh
#!/bin/bash #This is a example script.
#2013/12/17 hello()
{
echo "Now is the function hello."
echo "Hello!"
} function hi()
{
echo "Now si the function hi."
echo "Hi!"
} echo "Now call the function hello."
hello
echo "Now call the function hi."
hi
[root@localhost shell]# ./func_exam.sh
Now call the function hello.
Now is the function hello.
Hello!
Now call the function hi.
Now si the function hi.
Hi!
三、向函数传递参数和返回值
(1)在函数中获取传递的参数时,可以像脚本获取参数那样,使用位置变量$1、$2、$3等。
示例:
[root@localhost shell]# cat func_get_param.sh
#!/bin/bash #This is a example script.
#2013/12/17 function A()
{
echo `expr $1 + $2`
} D=`A 100 300` echo "D="$D
[root@localhost shell]# ./func_get_param.sh
D=400
(2)返回多个值的示例:
[root@localhost shell]# cat func_get_param.sh
#!/bin/bash #This is a example script.
#2013/12/17 function A()
{
sum=`expr $1 + $2`
sub=`expr $1 - $2`
} A 300 100 echo "sum="$sum
echo "sub="$sub
[root@localhost shell]# ./func_get_param.sh
sum=400
sub=200
上面的示例中,函数的返回值是通过变量来完成的,这种方式是借助变量的作用域在脚本中的全局性。
(3)使用预定义变量$?捕获函数是否成功执行:
[root@localhost shell]# cat func_ok.sh
#!/bin/bash #This is a example script.
#2013/12/17 function A()
{
echo `expr $1 + $2`
} D=`A 100 300` if [ $? = 0 ]
then
echo "Function succeeds!"
echo "D="$D
else
echo "Function fails."
fi
[root@localhost shell]# ./func_ok.sh
Function succeeds!
D=400
(4)使用if语句判断函数执行结果时,也可简写为:
if D=`A 100 300`
then
......
四、返回函数执行状态
在脚本中调用了函数之后,函数会执行函数结构体中的语句,完成后系统会根据函数中的最后一个语句的执行状态,自动返回函数的执行状态信息。但有时函数中的关键语句不是最后一句,这时就需要手动返回函数的执行状态。
要手动返回函数的执行状态,可以在函数最后使用return语句。return的使用方法和取值如下:
return:将函数最后一条命令的执行状态作为其状态信息返回。
return 0:返回函数成功执行信息。
return 1:返回函数错误的信息。
使用以上命令设置函数返回状态时,当脚本执行到return语句时,无论还有多少语句没有执行,脚本都会立即设置函数执行状态并返回。
Shell中的函数的更多相关文章
- shell中的函数、数组、报警系统脚本
1.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这 个小单元的名字即可.格式: function f_name() {commond} ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- shell中的函数、shell中的数组、告警系统需求分析
7月16日任务 20.16/20.17 shell中的函数20.18 shell中的数组20.19 告警系统需求分析 20.16/20.17 shell中的函数 函数就是一个子shell就是一个代码段 ...
- Linux centosVMware shell中的函数、shell中的数组、
一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function _name() { command ...
- 在Shell中使用函数文件
需要编写一个较庞大的脚本时,可能会涉及许多函数.变量.这是通常建议将众多的函数.变量放入一个单独的脚本内.这样做的好处很明显,不用担心某个函数.变量是否已经被定义和使用,也不用频繁地定义.清除函数和变 ...
- 小苏的Shell编程笔记之六--Shell中的函数
http://xiaosu.blog.51cto.com/2914416/531247 Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以 ...
- shell中的函数、数组
函数定义: 数组:
- shell中使用函数
函数定义.调用 $ cat te.sh #!/bin/bash # define a function test() { echo "This is a function." } ...
- shell中的函数 shell中的数组 告警系统需求分析
随机推荐
- Java的平台无关性
转载自:http://www.cnblogs.com/Y/archive/2011/03/22/JavaVM_Learning_Chapter2_Platform_Independence.html ...
- sharepoint站点锁定后解锁
MOSS站点备份过程中中断后导致整个站点处于锁定状态 其他的命令都无效,以下命令才解决问题 PS C:\Users\root> $Admin = new-object Microsoft.Sha ...
- SharePoint咨询师之路:备份和恢复系列三 - 备份web和服务应用程序
本系列包括: 备份服务器场和配置 备份web和服务应用程序 备份内容数据库 备份网站集 备份自定义项 备份web应用程序和服务应用程序一样有三种方式:SharePoint管理中心网站.Windows ...
- var隐式类型
var dogName = "ruiky"; 1.[编译器]会在编译时自动根据值的类型推断这个变量的类型: 2.变量类型不可更改:因为声明的时候已经确定类型了. 3.可 ...
- AnnotationSessionFactoryBean用法介绍
http://blog.csdn.net/flyingfalcon/article/details/8273618 —————————————————————————————————————————— ...
- VS2010编译器下针对C#和C++的opencv的配置方法
我们大家都知道opencv是针对C.C++编写的,没有独立的编译调试工具.所以今天就捣鼓了一下在xp vs2010下配置C++和C#环境下的opencv.请大家一步一步的按步骤操作.本人亲自鉴定可行. ...
- jQuery实现等比例缩放大图片让大图片自适应页面布局
通常我们处理缩略图是使用后台代码(PHP..net.Java等)根据大图片生成一定尺寸的缩略图,来供前台页面调用,当然也有使用前台javascript脚本将加载后的大图强行缩放,变成所谓的缩略图,这种 ...
- CENTOS LINUX查询内存大小、频率
more /proc/meminfo dmidecode [root@barcode-mcs ~]# dmidecode -t memory linux下查看主板内存槽与内存信息 1.查看内存槽数.那 ...
- [添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码
将nobody用户添加到nogroup 组:usermod -g nogroup nobody cat /etc/passwd|grep nobodynobody:x:65534:65534:nobo ...
- JedisPoolConfig配置
JedisPoolConfig config = new JedisPoolConfig(); //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true config. ...