Bash Shell语法之三函数简介
一、什么是Bash函数
像其他编程语言一样,Shell 也支持函数。Shell函数必须先定义后使用。函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。
二、Bash函数定义格式
[ function ] fun () {
函数体
[ retrun n ]
}
说明:
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
三、函数返回值
函数返回值,可以用return语句;如果不加,会将最后一条命令运行结果作为返回值。Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值(非0)表示失败。
四、函数参数
在函数种调用函数参数的方式,同脚本中调用脚本参数的方式:位置参数 $1 $2 ……$# $* $@
五、函数调用
函数名出现的地方,会被自动替换为函数;要执行函数中的命令必须在脚本中或命令行上调用函数
六、函数实例
1、
2、
3、函数定义实例
从上面这个例子的结果我们可以得到几点结论:
1、必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数。所以第一行报错。
2、total=$( fSum 3 2); 通过这种调用方法,我们清楚知道,在shell 中 单括号里面可以是命令语句。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此 各个输入参数直接用 空格分隔一次,命令里面获得参数方法可以通过:$0…$n得到。 $0代表函数本身。
3、函数返回值,只能通过$? 系统变量获得,直接通过=获得是空值。其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?获得。
4、函数作用域实例
我们一起来分析下上面这个实例,可以得到如下结论:
-
定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件定义好的地方查找,找到直接执行。
-
需要获得函数值:通过$?获得
-
如果需要传出其它类型函数值,可以在函数调用之前,定义变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。
-
如果需要定义自己变量,可以在函数中定义:local 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值 。
原创文章,作者:wxdz_2004(古雨秋),如若转载,请注明出处:http://www.178linux.com/4067