在 bash 的 for 循环中,计数器变量是局部的还是全局的?

von*_*otz 3 bash for

在成语中

for i in $directories; do
  # ...
done
Run Code Online (Sandbox Code Playgroud)

...变量是$i局部的还是全局的?

如果碰巧有一个同名的全局变量怎么办。bash 是否与全局变量或for ... in ...标头之一一起使用?

Ste*_*itt 17

for不引入它自己的变量范围,所以i无论它是什么进入for循环。这可以是全局的,也可以是声明为 local 的任何函数的局部的,甚至全局但在子 shell 中的

在退出for循环时,变量将具有它在循环中的最后一个值,除非它以子 shell 结束。影响的程度取决于变量的范围,因此最好将循环变量声明为局部内部函数(除非需要副作用)。