в идиоме
for i in $directories; do
# ...
done
... переменная $i
локальная или глобальная?
А что, если окажется, что есть глобальная переменная с таким же именем? Работает ли bash с глобальной переменной или с переменной из for ... in ...
заголовка?
решение1
for
не вводит собственную область видимости переменных, поэтому i
является тем, что есть на входе в for
цикл. Это может быть глобальным илилокальный для любой функции, которая объявила его локальным, или дажеглобальный, но в под-оболочке.
При выходе из for
цикла переменная будет иметь последнее значение, которое она имела в цикле, если только она не оказалась в подоболочке. Насколько это повлияет, зависит от области действия переменной, поэтому хорошей идеей будет объявлять переменные цикла как локальные внутренние функции (если только не желателен побочный эффект).