im Idiom
for i in $directories; do
# ...
done
... ist die Variable $i
lokal oder global?
Und was, wenn es zufällig eine globale Variable mit demselben Namen gibt? Funktioniert Bash mit der globalen Variable oder mit der im for ... in ...
Header?
Antwort1
for
führt keinen eigenen Variablenbereich ein, also i
ist es das, was es beim Eintritt in die for
Schleife ist. Dies könnte global sein oderlokal für die Funktion, die es als lokal deklariert hat, oder auchglobal, aber in einer Unterschale.
Beim Verlassen der for
Schleife hat die Variable den letzten Wert, den sie in der Schleife hatte, sofern sie nicht in einer Unter-Shell gelandet ist. Wie stark sich das auswirkt, hängt vom Gültigkeitsbereich der Variable ab. Daher ist es eine gute Idee, Schleifenvariablen als lokale Variablen innerhalb von Funktionen zu deklarieren (sofern der Nebeneffekt nicht erwünscht ist).