默认情况下,bash 中的每一个变量对于每一个函数、脚本,甚至是外部 shell(如果你是在脚本中声明变量的话)都是全局的。
如果你想让你的变量成为某个函数的局部变量,你可以使用 local 来让变量成为一个独立于全局范围的新变量,它的值只能在该函数中被访问。
Section 58.1: 全局变量
var="hello"
function foo(){
echo $var
}
foo
显然会输出 “hello”,但反过来也可以:
function foo() {
var="hello"
}
foo
echo $var
也会输出 "hello
Section 58.2: 局部变量
function foo() {
local var
var="hello"
}
foo
echo $var
不会输出任何内容,因为 var 是函数 foo 的局部变量,从函数 foo 外部看不到它的值。
Section 58.3: 将两者混合在一起
var="hello"
function foo(){
local var="sup?"
echo "inside function, var=$var"
}
foo
echo "outside function, var=$var"
将输出
inside function, var=sup?
outside function, var=hello