Shell变量作用域

总结

  • 定义在函数外的变量为全局变量,作用域为定义位置开始到shell结束。
  • 定义在函数内的变量,默认为全部变量,作用域为定义位置开始到shell结束,即函数内对变量的修改,会在函数外被访问到。变量前加local关键字,则变量为局部变量,作用域在函数内,即函数内对变量的修改,不会在函数外被访问到。
  • 定义在函数内的全局变量,当函数在子shell调用时,作用域在子shell内,不会被父shell访问。
  • 子shell内的对父shell变量的修改不会被父shell访问到。

示例

g="g"
func1()
{
g="g1"
}

func2()
{
local g="g2"
}

echo "g:$g"  # output:g:g
func1
echo "g:$g"  # output:g:g1
g="g"
func2
echo "g:$g"  # output:g:g
g="g"
a=`func2` #子shell调用,
echo "g:$g"  # output:g:g

你可能感兴趣的:(#,Shell)