慣用句では
for i in $directories; do
# ...
done
...変数は$i
ローカルですか、それともグローバルですか?
同じ名前のグローバル変数がある場合はどうなるでしょうか。bash はグローバル変数で動作しますか、それともヘッダーの変数で動作しますかfor ... in ...
?
答え1
for
独自の変数スコープを導入しないので、ループi
に入る時点でのスコープのままですfor
。これはグローバルでも、ローカルとして宣言された関数に対してローカル、 あるいはグローバルだがサブシェル内。
ループを終了するとfor
、変数はサブシェル内で終了しない限り、ループ内で最後に保持していた値を持ちます。影響の程度は変数のスコープによって異なるため、ループ変数を関数内でローカルとして宣言することをお勧めします (副作用が必要な場合を除く)。