Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Describe Site/Development/Env/BeginningBashScript/loop.html here for, while, until을 사용하는 순환문

7. for, while, until을 사용하는 순환문

여기에서는 for, while, until을 사용한 순환문에 대해 알아보겠다.

for를 사용한 순환문의 경우 일반적인 프로그래밍 언어를 사용할 때와 좀 다른 점이 있다. 예컨대 문자열에서의 각 단어를 지나쳐가며 문자열이 끝날 때 까지 루프를 사용할 수도 있다.

while의 조건이 참인 동안에는 계속 루프 안의 명령이 동작한다. 하지만 조건이 거짓인 경우 루프는 바로 중지되고 루프 밖의 코드를 실행하는 것이다.

until도 따지고 보면 같은 맥락이기는 하지만, 이 경우에는 조건이 거짓인 동안 루프가 동작한다는 점이 다르다.

물론 사용하는 사람 입장에서는 while이나 until이나 경우에 따라 편하게 써 주면 되는 것이다. ^^

7.1. 예제 : for

 
#!/bin/bash 
for i in $( ls ); do 
echo item: $i 
done 

두 번째 줄에서 특이한 변수를 하나 볼 수 있다. 이것은 ls의 실행 결과를 통째로 변수로 받고 있다. 여기에서 $i는 ls 의 실행 결과를 순서대로 한 단어씩 받는다.

세 번째 줄은 루프가 진행되는 동안 실행할 내용이다. 여기에서는 한 줄 짜리로 되어 있지만 필요에 따라 몇 줄이고 추가할 수 있다. 얼마든지 추가한 다음, 마지막 내용의 다음 줄에 done을 입력하여 루프가 끝이라고 알려 주면 된다.

마지막 줄의 'done'은, $i가 지금 받아서 사용한 변수는 폐기하고 새로운 변수를 받아야 한다는 뜻이다. done 이전에 있던 내용은 실행되었고, 이제 다시 새 변수를 넣어 같은 내용을 진행할 것이다.

이 스크립트는 정말 단순하기 짝이 없지만, 루프에 대해 필요한 내용은 다 구색이 갖춰져 있다. 이 내용만 제대로 이해해도 기본적으로 루프를 사용하는 데에는 어려움이 없을 것이다.

7.2. 예제 : C언어 방식으로 사용하는 for

이런 방식으로 사용하는 for도 한번 생각해 보자. 이것은 C나 Perl에서 사용하는 방식과 비슷한 구석이 많다.

 
#!/bin/bash 
for i in `seq 1 10`; 
do 
echo $i 
done 

7.3. 예제 : while

 
#!/bin/bash 
COUNTER=0 
while [ $COUNTER -lt 10 ]; do 
echo The counter is $COUNTER 
let COUNTER=COUNTER+1 
done 

이 스크립트는 C나 파스칼, Perl 등의 유명한 언어에서 사용하는 방식을 흉내내고 있다.

7.4. 예제.... 하나 더!

 
#!/bin/bash 
COUNTER=20 
until [ $COUNTER -lt 10 ]; do 
echo COUNTER $COUNTER 
let COUNTER-=1 
done