레벨247-1 : 쉘프로그램내에서 사용되는 while반복문의 사용방법과 실 사용 예
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,059 조회
- 0 추천
- 목록
본문
레벨247-1 : 쉘프로그램내에서 사용되는 while반복문의 사용방법과 실 사용 예
리눅스 쉘프로그램내에서 사용되는 while문은 주어진 조건식이 참일 경우에(종료코드가 0일 경우에 참) “do ~ done”의 내용을 반복적으로 실행하는 반복문입니다.
그리고 “do ~ done”내에는 반복되는 동안 실행될 내용들과 함께 조건식을 변화시키는 변수의 수식이 들어가는 것이 일반적입니다. 즉, 1씩 증가를 시킨다든가? 또는 1씩 감소를 시키는 등과 같이 특정 조건에서 while문이 종료될 수 있도록 조건식에 변화를 주는 수식이 들어가게 됩니다. 물론 무한루프문의 경우에는 그렇지 않을 수도 있습니다.
[권고사항]
while반복문은 until반복문과 비교해 보셔야 합니다. 반복문이라는 의미에서는 같은것이지만 반복하는 조건문의 의미는 서로 다르기 때문입니다. 따라서 이 책의 until명령어편에서 while반복문과 until반복문과의 차이점에 대하여 설명하였습니다. 꼭 참고하시기 바랍니다. |
다음은 while의 일반적인 사용형식입니다.
while (조건문)
반복되는 동안 실행될 명령문들 done |
말씀드린바와 같이 “조건문”의 값이 참일 경우에 “do ~ done”의 내용을 계속해서 실행이 됩니다. done문을 만나면 while문의 처음으로 돌아가서 다시 “조건문”을 평가합니다. “조건문”이 거짓이 될 때에 while문을 종료하게 됩니다. 즉, “조건문”에서 0이 아닌 값이 나오면 거짓이 되어 while문은 종료되고 done다음에 있는 실행문으로 넘어갑니다.
다음은 while반복문을 이용한 간단한 쉘프로그램입니다.
[root@command root]# cat while01.sh #!/bin/bash
var1=0
while (( $var1 < 5 ))
do
echo "var1 value is $var1"
let var1+=1
done [root@command root]# |
위의 쉘프로그램의 내용을 설명하면 다음과 같습니다.
var1=0
var1변수의 초기값으로 0이 할당되었습니다.
while (( $var1 < 5 ))
var1의 변수값이 5보다 작을 때까지 계속해서 반복합니다. 만약 var1이 5와 같거나 클 경우에는 while반복문을 종료하고 done다음의 실행문으로 넘어갑니다.
do
echo "var1 value is $var1"
let var1+=1
done
var1의 값이 5보다 작을 동안에 실행될 내용입니다. 이 반복문 내에 있는“let var+=1”이 한번씩 실행될 때마다 var1의 값이 1씩 증가되어 조건문의 상태를 변화시킵니다.
결론적으로 이 쉘프로그램은 var1의 값이 0, 1, 2, 3, 4일 때 각각 한번씩 실행되며 모두 5회 반복될 것입니다.
다음은 위의 while01.sh 쉘프로그램을 실행한 예입니다.
[root@command root]# ./while01.sh var1 value is 0 var1 value is 1 var1 value is 2 var1 value is 3 var1 value is 4 [root@command root]# |
위의 while01.sh쉘프로그램의 실행과정을 간단히 설명하면 다음과 같습니다.
var1변수에 0이 할당되었을 때 “var1
value is 0”이 출력되고 var1변수값이 1 증가되어 1이 됩니다.
var1변수가 1이 되었을 때 “var1
value is 1”이 출력되고 var1변수값이 1 증가되어 2가 됩니다.
var1변수가 2가 되었을 때 “var1 value is 2”가 출력되고 var1변수값이 1 증가되어 3이 됩니다.
var1변수가 3이 되었을 때 “var1 value is 3”이 출력되고 var1변수값이 1 증가되어 4가 됩니다.
var1변수가 4가 되었을 때 “var1 value is 4”가 출력되고 var1변수값이 1 증가되어 5가 됩니다.
var1변수가 5가 되었을 때 조건문이 거짓이 되어 while반복문이 종료됩니다.
그리고 done다음에 실행될 문이 주어져 있지 않았으므로 이 쉘프로그램은 종료됩니다.
관련자료
-
이전
-
다음