#!/bin/bash
readonly x=2
function test {
local x=1
echo ${x}
}
test
echo $x
Run Code Online (Sandbox Code Playgroud)
结果是,
readonly-local-test.sh: line 6: local: x: readonly variable
2
2
Run Code Online (Sandbox Code Playgroud)
当变量是只读时,就会发生这种情况。但是,如果我删除只读限制,如下所示,
#!/bin/bash
x=2
function test {
local x=1
echo ${x}
}
test
echo $x
Run Code Online (Sandbox Code Playgroud)
结果是,
1
2
Run Code Online (Sandbox Code Playgroud)
为什么只读全局变量不能被隐藏?
据我所知,这种行为可以命名为“工作作为设计”。您有只读变量,并且您无法更改该变量的值。在 bash 中,您无法选择定义覆盖此类全局变量集的变量。