Проблемы с областями видимости в разных языках оболочки? - PullRequest
1 голос
/ 15 февраля 2011

Похоже, что 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.)

Это кажется странным.

ОБНОВЛЕНИЕ: Я редактировал вопрос.Предыдущий вопрос четко не сформулирован.

1 Ответ

1 голос
/ 15 февраля 2011

Bash и Dash не завершаются ошибкой, если глобальная переменная не только для чтения.

Корн (ksh93) не завершится ошибкой, только если нет экземпляров x только для чтения.

...