看来pdksh和mksh具有我期望的范围实现。
例如:
readonly x='global'
f() {
local x
readonly x='f'
echo $x
}
g() {
local x
readonly x='g'
echo $x
}
echo $x
f
g
echo $x
pdksh和mksh产生我的预期结果:
global
f
g
global
Bash失败了:
line 5: local: x: readonly variable
Dash和Ksh93也失败了。 (我在Ksh93的测试中将local
更改为typeset
。)
这似乎令人困惑。
更新:我编辑了这个问题。之前的问题没有明确说明。
答案 0 :(得分:1)
如果全局变量不是只读的,则Bash和Dash不会失败。
仅当x
的实例的 none 为只读时,Korn(ksh93)才会失败。