在bash的for迴圈中,計數器變數是局部變數還是全域變數?

在bash的for迴圈中,計數器變數是局部變數還是全域變數?

在慣用語中

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

...變數是$i局部變數還是全域變數?

如果剛好有一個同名的全域變數怎麼辦? bash 是否使用全域變數或標頭之一for ... in ...

答案1

for不引入自己的變數範圍,i進入for循環的任何內容也是如此。這可能是全球性的,或者本地於任何宣告為本地的函數, 甚至全域但在子 shell 中

退出for循環時,變數將具有循環中的最後一個值,除非它最終位於子 shell 中。影響程度取決於變數的範圍,因此最好將循環變數宣告為局部內部函數(除非需要副作用)。

相關內容