1 全局变量

shell定义的全局变量在任何位置都可以访问,默认情况下,shell里面定义的任何变量全局变量。举例如下

#/bin/bash function test { echo $[ $value * 2 ] } value=9 value=$(test) echo "result is $value"

运行后结果为

result is 18

这里可以发现函数内部是可以访问value这个全局变量的,虽然全局变量的定义出现在函数的后面也没有关系。

2 局部变量

在变量的前面加上关键字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变量并没有变化。