在成语中
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 结束。影响的程度取决于变量的范围,因此最好将循环变量声明为局部内部函数(除非需要副作用)。