Unix / Linux-쉘 루프 제어
이 장에서는 Unix의 쉘 루프 제어에 대해 설명합니다. 지금까지 루프를 만들고 루프를 사용하여 다양한 작업을 수행하는 방법을 살펴 보았습니다. 때때로 루프를 중지하거나 루프의 반복을 건너 뛰어야합니다.
이 장에서 우리는 쉘 루프를 제어하는 데 사용되는 다음 두 문장을 배울 것입니다.
그만큼 break 성명서
그만큼 continue 성명서
무한 루프
모든 루프는 수명이 제한되어 있으며 루프에 따라 조건이 거짓이거나 참이면 나옵니다.
필요한 조건이 충족되지 않으면 루프가 영원히 계속 될 수 있습니다. 종료하지 않고 영원히 실행되는 루프는 무한히 실행됩니다. 이러한 이유로 이러한 루프를 무한 루프라고합니다.
예
다음은 while 0에서 9까지의 숫자를 표시하는 루프-
#!/bin/sh
a=10
until [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
이 루프는 영원히 계속됩니다. a 항상 greater than 또는 equal to 10 10보다 적지 않습니다.
break 문
그만큼 break문은 break 문까지 모든 코드 행의 실행을 완료 한 후 전체 루프의 실행을 종료하는 데 사용됩니다. 그런 다음 루프가 끝나면 코드로 내려갑니다.
통사론
다음과 같은 break 문은 루프에서 나오는 데 사용됩니다-
break
break 명령은 또한이 형식을 사용하여 중첩 된 루프를 종료하는 데 사용할 수 있습니다.
break n
여기 n 지정합니다 nth 엔 클로징 루프에서 출구로.
예
다음은 루프가 즉시 종료되는 것을 보여주는 간단한 예입니다. a 5가된다-
#!/bin/sh
a=0
while [ $a -lt 10 ]
do
echo $a
if [ $a -eq 5 ]
then
break
fi
a=`expr $a + 1`
done
실행하면 다음과 같은 결과를 받게됩니다.
0
1
2
3
4
5
다음은 중첩 된 for 루프의 간단한 예입니다. 이 스크립트는 다음과 같은 경우 두 루프에서 모두 중단됩니다.var1 equals 2 과 var2 equals 0 −
#!/bin/sh
for var1 in 1 2 3
do
for var2 in 0 5
do
if [ $var1 -eq 2 -a $var2 -eq 0 ]
then
break 2
else
echo "$var1 $var2"
fi
done
done
실행하면 다음과 같은 결과를 받게됩니다. 내부 루프에는 인수 2와 함께 break 명령이 있습니다. 이는 조건이 충족되면 외부 루프에서 벗어나 궁극적으로 내부 루프에서도 분리되어야 함을 나타냅니다.
1 0
1 5
Continue 문
그만큼 continue 문은 break 명령을 사용하면 전체 루프가 아닌 루프의 현재 반복이 종료된다는 점이 다릅니다.
이 명령문은 오류가 발생했지만 루프의 다음 반복을 실행하려고 할 때 유용합니다.
통사론
continue
break 문과 마찬가지로 연속 명령에 정수 인수를 지정하여 중첩 루프에서 명령을 건너 뛸 수 있습니다.
continue n
여기 n 지정합니다 nth 계속할 엔 클로징 루프.
예
다음 루프는 continue continue 문에서 반환하고 다음 문 처리를 시작하는 문-
#!/bin/sh
NUMS="1 2 3 4 5 6 7"
for NUM in $NUMS
do
Q=`expr $NUM % 2`
if [ $Q -eq 0 ]
then
echo "Number is an even number!!"
continue
fi
echo "Found odd number"
done
실행하면 다음과 같은 결과를 받게됩니다.
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number