bash의 for 루프에서 카운터 변수는 로컬인가요, 아니면 글로벌인가요?

bash의 for 루프에서 카운터 변수는 로컬인가요, 아니면 글로벌인가요?

관용구에서

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

... 변수가 $i로컬인가요, 아니면 글로벌인가요?

그리고 같은 이름의 전역 변수가 있으면 어떻게 될까요? bash는 전역 변수 또는 헤더 중 하나와 작동합니까 for ... in ...?

답변1

for자체 변수 범위를 도입하지 않으므로 루프 i시작 시 무엇이든 적용됩니다 for. 이는 글로벌일 수도 있고,로컬로 선언된 모든 함수에 대해 로컬, 또는전역이지만 하위 쉘에 있음.

루프 를 종료할 때 for변수는 하위 쉘에서 끝나지 않는 한 루프에 있었던 마지막 값을 갖게 됩니다. 영향을 미치는 정도는 변수의 범위에 따라 다르므로 루프 변수를 로컬 내부 함수로 선언하는 것이 좋습니다(부작용을 원하지 않는 한).

관련 정보