관용구에서
for i in $directories; do
# ...
done
... 변수가 $i
로컬인가요, 아니면 글로벌인가요?
그리고 같은 이름의 전역 변수가 있으면 어떻게 될까요? bash는 전역 변수 또는 헤더 중 하나와 작동합니까 for ... in ...
?
답변1
for
자체 변수 범위를 도입하지 않으므로 루프 i
시작 시 무엇이든 적용됩니다 for
. 이는 글로벌일 수도 있고,로컬로 선언된 모든 함수에 대해 로컬, 또는전역이지만 하위 쉘에 있음.
루프 를 종료할 때 for
변수는 하위 쉘에서 끝나지 않는 한 루프에 있었던 마지막 값을 갖게 됩니다. 영향을 미치는 정도는 변수의 범위에 따라 다르므로 루프 변수를 로컬 내부 함수로 선언하는 것이 좋습니다(부작용을 원하지 않는 한).