bash一行变量如何影响变量作用域


x=1
function f()
{
echo $x
}
x=2 f #2
function g()
{
x=3
a=4
echo $x
}
a=5
x=2 g  #3
echo $x  #1
echo $a  #4

为什么输出是23.14?为什么函数f访问单行变量x而不是全局变量?为什么函数g创建全局变量x和a,但x不覆盖外部的全局变量?

为什么函数f访问一行变量x而不是全局变量?

因为指定一个变量作为命令的一部分,将它设置在该命令执行的动态范围内(仅)。

为什么函数g创建全局变量x和a,但x不覆盖外部的全局变量?

g赋值给变量xa。但是,在调用x的上下文中,实际上是局部的,因为作为调用的一部分已经为该变量指定了一个值。a不是这样,所以对它的赋值通常会影响shell环境。

相关内容

  • 没有找到相关文章

最新更新