什么是函数?
1)函数基础概念
函数:function ,指把一段独立功能的代码当作一个整体并为之取一个名字,即命名的代码段,也即函数;
函数是过程式编程中实现代码重用的重要组件,也即实现模块化编程和结构化编程的重要组件;
函数代码段在定义时不会自动执行,在调用时才会自动执行;调用函数,即在代码中给定函数名,在代码执行时会在函数名出现的位置执行该函数名代表的函数代码段;
函数命名与变量命名法则类似,尽量不要与系统命令同名;
函数的生命周期:被调用时创建,返回时(即函数执行完了时)终止;
函数状态返回值为函数体中运行的最后一条命令的状态返回值,与脚本一样这样的状态返回值并不理想,因此有时需要自定义函数状态返回值;自定义函数状态返回值使用return命令,函数体中任何位置出现return函数终止:
return [0-255]
0: 成功
1-255: 失败
(2)函数的定义
格式一:
function f_name {
...函数体...
格式二:
f_name() {
...函数体...
}
(3)函数返回值
①函数的执行结果返回值
1>使用echo或printf命令输出;
printf不会换行输出但是可以格式化输出;
2>函数体中调用的命令的执行结果;
②函数的执行状态返回值(即退出状态码)
1>默认取决于函数体中执行的最后一条命令的退出状态码;
2>自定义:使用return命令;
(4)函数参数
在函数体中可以使用$1,$2, ...引用传递给函数的参数;还可以在函数中使用$*或$@引用传递给函数的所有参数,使用$#引用传递给函数的参数个数;
在调用函数时,在函数名后面以空白符分隔给定参数列表即可,例如,testfunc arg1 arg2 arg3 ...
(5)变量作用域:
局部变量:作用域是函数的生命周期;
定义局部变量的方法:local VARIABLE=VALUE
本地变量:作用域是当前shell脚本的生命周期;
(6)函数递归:函数直接或间接调用自身;
①阶乘:n!=n*(n-1)!=n*(n-1)*(n-2)!=...
#/bin/bash # fact () { if [ $1 -eq 1 -o $1 -eq 0 ];then echo 1 else echo "$[$1*$(fact $[$1-1])]" fi } fact $1②斐波那契数列:这个数列从第2项开始,每一项都等于前两项之和,特别指出第0项是0,第1项是1;例如,0,1,1,2,3,5,8,13,21,...
#!/bin/bash # fab() { if [ $1 -eq 0 -o $1 -eq 1 ];then echo -n "1 " else echo -n "$[$(fab $[$1-2])+$(fab $[$1-1])] " fi } for i in $(seq $1);do fab $i done echo ~
shell中的函数
原创
©著作权归作者所有:来自51CTO博客作者大飞侠大虾的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:CentOS 6 系统启动流程
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
shell脚本系列:4、shell函数
shell脚本系列:4、shell函数文章目录shell脚本系列
shell 作用域 局部变量 保留字 -
shell脚本编程笔记(八)—— 脚本函数
函数是一个脚本代码块,可以为其命名并在代码中任何位置重用。要在
bash linux 开发语言 shell脚本 库文件 -
Shell脚本编程——函数(function)
做为一个经常写脚本的运维人员来讲,都能发现一个问题,很多时候我们在不同的脚本里面重复的写着同一段代码。比如我们要去使用正则表达式去判断IP地址的合法性问题,如果每次都去写一遍这个匹配IP的表达式,整个表达式写下来老长老长的,0-9的数字组合看的眼都花了,是不是很累了。当然有人会说了,保存一份正确的代码之后,需要用这段代码的时候,直接粘贴到正在编写的脚本里面不就行了嘛!是没错,但这样是不是很多脚本里面都重复存放着同一段代码,额外增加了脚本的代码量。有没有一个两全其美的办法,让我们的脚本代码量又小,又省去了每次重复的粘贴同一段代码的操作,同时还能完美的调用这段代码了。shell函数的出现为我们完美的解决了这一设想。
函数和shell程序的区别 定义函数的语法格式 函数的定义方式 函数的调用方式 定义标准递归函数