shell中函数的定义格式如下:
|
|
说明:
- 可以带function fun() 定义,也可以直接fun() 定义。
- 返回值,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255);调用方法和取得返回值之间,不能有任何操作,不然取不到return的值。
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
函数参数
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…
|
|
注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
向函数传递数组变量
|
|
函数返回值
默认仅能使用 return 返回 (0,255) 范围内的数值。
如果需要函数返回数值以外类型的值,可以在函数调用之前,定义变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。
另外,也可以使用 echo 的方式来获取其他类型的返回值。
|
|
函数返回数组变量
|
|
函数内部变量
如果需要定义自己变量,可以在函数中定义:local 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值
删除函数
像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项,如:$unset .f function_name
全局函数
如果你希望直接从终端调用函数,可以将函数定义在主目录下的 .profile 文件,这样每次登录后,在命令提示符后面输入函数名字就可以立即调用。