shell定义的全局变量在任何位置都可以访问,默认情况下,shell里面定义的任何变量全局变量。举例如下
#/bin/bash
function test {
echo $[ $value * 2 ]
}
value=9
value=$(test)
echo "result is $value"
运行后结果为
result is 18
这里可以发现函数内部是可以访问value这个全局变量的,虽然全局变量的定义出现在函数的后面也没有关系。
在变量的前面加上关键字local,这个变量就只存在对应的作用域里面,比如在函数里面用local的话,对应的变量生命周期只存在函数内部,外部无法访问。举例如下:
#/bin/bash
function test {
local value=$[ $data + 3 ]
}
data=2
value=4
test
echo "value is $value"
运行后结果为:
value is 4
可以发现在test函数内部定义了一个局部变量,函数内部对value进行修改后,外面的value变量并没有变化。