在习语中
for i in $directories; do
# ...
done
...变量是$i
局部变量还是全局变量?
如果恰好有一个同名的全局变量怎么办? bash 是否使用全局变量或标头之一for ... in ...
?
答案1
for
不引入自己的变量范围,i
进入for
循环的任何内容也是如此。这可能是全球性的,或者对于声明为本地的任何函数都是本地的, 甚至全局但在子 shell 中。
退出for
循环时,变量将具有循环中的最后一个值,除非它最终位于子 shell 中。影响程度取决于变量的范围,因此最好将循环变量声明为局部内部函数(除非需要副作用)。