В циклах for в bash переменная-счетчик является локальной или глобальной?

В циклах for в bash переменная-счетчик является локальной или глобальной?

в идиоме

for i in $directories; do
  # ...
done

... переменная $iлокальная или глобальная?

А что, если окажется, что есть глобальная переменная с таким же именем? Работает ли bash с глобальной переменной или с переменной из for ... in ...заголовка?

решение1

forне вводит собственную область видимости переменных, поэтому iявляется тем, что есть на входе в forцикл. Это может быть глобальным илилокальный для любой функции, которая объявила его локальным, или дажеглобальный, но в под-оболочке.

При выходе из forцикла переменная будет иметь последнее значение, которое она имела в цикле, если только она не оказалась в подоболочке. Насколько это повлияет, зависит от области действия переменной, поэтому хорошей идеей будет объявлять переменные цикла как локальные внутренние функции (если только не желателен побочный эффект).

Связанный контент