bash의 for 루프에서 카운터 변수는 지역 변수입니까 아니면 전역 변수입니까?

bash의 for 루프에서 카운터 변수는 지역 변수입니까 아니면 전역 변수입니까?

관용어로

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

...변수가 $i로컬인가요 아니면 전역인가요?

같은 이름을 가진 전역 변수가 있으면 어떻게 되나요? bash는 전역 변수나 헤더 중 하나를 사용합니까 for ... in ...?

답변1

for자체 변수 범위를 도입하지 않으며 루프에 i들어가는 for항목도 없습니다 . 이는 전역적이거나local로 선언된 모든 함수에 대해 로컬입니다., 심지어전역이지만 서브셸에 있음.

루프를 종료 하면 for변수는 하위 쉘에서 끝나지 않는 한 루프의 마지막 값을 갖게 됩니다. 효과의 정도는 변수의 범위에 따라 달라지므로 루프 변수를 로컬 내부 함수로 선언하는 것이 가장 좋습니다(부작용이 필요하지 않은 경우).

관련 정보