我可以从函数内部访问与局部变量同名的全局变量吗?

use*_*763 5 bash

假设我有以下代码:

# Global variable x
x="Hi"

foo()
{
    # Local variable x
    local x="Hello"
}
Run Code Online (Sandbox Code Playgroud)

x我可以从函数内部访问(读取和设置)全局变量吗foo()

Mar*_*oun 0

请尝试以下操作:

  1 x="Hi"
  2
  3 foo()
  4 {
  5   echo $x
  6   x="Hello"
  7   echo $x
  8   local x="Bye"
  9   echo $x
 10 }
 11
 12 foo
 13 echo $x
Run Code Online (Sandbox Code Playgroud)

这将打印:

Hi
Hello
Bye
Hello
Run Code Online (Sandbox Code Playgroud)
  • 首先echo $x打印全局的值x
  • 接下来我们修改它,它的值发生了变化,如第13行所示
  • 里面的foolocal x没有改变