Похоже, что 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
Тире и Ksh93 тоже не оправдали мои ожидания.(Я изменил local
на typeset
в тесте Ksh93.)
Это кажется странным.
ОБНОВЛЕНИЕ: Я редактировал вопрос.Предыдущий вопрос четко не сформулирован.