Shell变量默认是global的,其作用于从其被定义开始到shell脚本执行结束
local一般用于局部变量声明,多在在函数内部使用。
(1)shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
(2)shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
(3)如果同名,Shell函数定义的local变量会屏蔽脚本定义的global变量。
示例1:
funct() {
foo=1
echo "in function: foo=$foo"
}
funct
echo "outside function: foo=$foo"
结果:
[sms@lab233 test]$ ./var.sh
in function: foo=1
outside function: foo=1
示例2:
foo=0
funct() {
foo=1
echo "in function: foo=$foo"
}
funct
echo "outside function: foo=$foo"
结果:
[sms@lab233 test]$ ./var.sh
in function: foo=1
outside function: foo=1
示例3:
function Hello()
{
local text="Hello World!!!"
echo $text
}
Hello
echo "text is"$text"!"
结果:
[sms@lab233 test]$ sh c.sh
Hello World!!!
text is!