#!/bin/bash
for i in 1 2 3 4
do
# {
# local i ##gives error local: can only be used in a function
for i in 1 2 3
do
echo "inner loop ----- $i"
(( i++ ))
done
# }
echo $i
done
아웃 아웃 :
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
중첩 된 for 루프 내부에서 변수를 로컬로 만들 수 있습니까?
답변
하위 쉘에서 내부 변수를 실행하면 외부 변수에 영향을 미치지 않습니다.
for i in 1 2 3 4; do
(
for i in 1 2 3; do
echo "inner loop ----- $i"
(( i++ ))
done
)
echo $i
done
결과 :
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
1
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
2
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
3
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
답변
중첩 된 for 루프 내부에서 변수를 로컬로 만들 수 있습니까?
예, 그러나 기능 만 사용합니다.
내장 local
은 함수 내부에만 존재할 수 있으므로 변수 i
를 전역에서 로컬로 범위를 변경 하는 함수를 제공해야합니다 .
#!/bin/bash
internalfunction () {
local i ### Works as is inside a function
for i in 1 2 3; do
echo "inner loop ----- $i"
(( i++ ))
done
}
for i in 1 2 3 4; do
echo $i
internalfunction
done
$ ./script.sh
1
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
2
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
3
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3