Shell 函数的使用
函数的定义方式
- function 关键字,可以不需要括号
function func_name { command 1 command 2 ... command N }
- 没有 function 关键字,需要括号
func_name() { command 1 command 2 ... command N }
函数的使用方式(调用)
- 直接使用函数名调用,不需要括号,可以将其想象成 shell 中的一条命令
$ func_name [arg1 arg2 ... argN]
- 函数内部可以直接使用 $1 $2 ... $N
func_name() { echo $1 echo $2 }
函数的返回值
- return 使用 return 返回值只能 返回1~255的整数,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1, 非零表示失败
- echo 可以返回任何字符串结果,通常用于返回数据,比如一个字符串值或者列表值
全局变量与局部变量
-
全局变量
- 不做特殊声明,Shell 中变量都是全局变量
- Tips:大型脚本程序中慎用全局变量
vim test_local1.sh
#!/bin/bash var1="Hello World" function test { var2=120 }
[wonbin@localhost shell]$ sh test_local.sh Hello World // 为空 因为test 函数没有执行 [wonbin@localhost shell]$
vim test_local2.sh
#!/bin/bash
var1="Hello World"
function test {
var2=120
}
echo $var1
echo $var2
test // var2 变成全局变量
echo $var1
echo $var2
function test2 {
echo $var1
echo $var2
}
test2
运行结果
[wonbin@localhost shell]$ sh test_local2.sh
Hello World
Hello World
120
Hello World
120
[wonbin@localhost shell]$
- 局部变量
- 定义变量时,使用 local 关键字
- 若函数内外存在同名变量,则函数内部覆盖外部变量
vim test_local3.sh
#!/bin/bash
var1="Hello World"
function test {
local var2=120 // 仅在函数内部有效
}
test
echo $var1
echo $var2
执行结果
[wonbin@localhost shell]$ sh test_local3.sh
Hello World
[wonbin@localhost shell]$
函数库
为什么要定义函数库,将一些通用的功能封装起来,方便其他用到的地方调用
- 经常使用到的重复代码封装成函数文件
- 一般不直接执行,而是其他脚本调用
本作品采用《CC 协议》,转载必须注明作者和本文链接