레벨246-1 : 쉘프로그램내에서 사용되는 until문의 사용방법과 실 사용 예
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,092 조회
- 0 추천
- 목록
본문
레벨246-1 : 쉘프로그램내에서 사용되는 until문의 사용방법과 실 사용 예
리눅스 쉘프로그램내에서 사용되는 until문은 주어진 조건식이 참(종료코드가 0일 경우에 참)일 때까지 “do ~ done”의 내용을 반복 실행하는 반복문입니다. 즉, until문과 while문은 비슷해 보이지만 조건문의 의미가 상반된 경우입니다. 아래 until문과 while문의 간단한 비교를 잘 보시기 바랍니다.
while문은 조건문이 참이면 “do ~ done”내용을 계속 반복 실행한다. 즉, 조건문이 거짓이면 while문을 종료하고 done다음으로 넘어간다.
until문은 조건문이 거짓이면 “do ~ done”내용을 계속 반복 실행한다. 즉, 조건문이 참이면 until문을 종료하고 done다음문으로 넘어간다. |
위의 차이점은 분명히 이해하시기 바랍니다.
첨언한다면 사실, while과 until은 전혀 헷갈리지 않습니다. 영문구조만 이해하신다면 너무나 당연한 것입니다. 즉, while은 “참일동안...”이라는 의미하며, until은 “참이 될때까지...”라는 의미이기 때문입니다.
다음은 until문의 사용형식입니다.
until 조건문
조건문이 거짓일 동안에 실행될 명령문들 done |
말씀드린바와 같이 “조건문”의 값이 거짓일 동안에“do ~ done”의 내용을 계속해서 반복실행합니다. done문을 만나면 until문의 처음으로 돌아가서 다시 “조건문”을 평가합니다. “조건문”이 참이면 until문을 종료하게 됩니다. 즉, “조건문”의 결과가 0이면 참이 되어 until문은 종료되고 done다음에 있는 문장으로 넘어갑니다.
다음은 until반복문을 이용한 간단한 쉘프로그램입니다.
[root@command root]# cat until01.sh #!/bin/bash
var1=0
until (( $var1 == 5 ))
do echo "var1 value is $var1" let var1+=1 done [root@command root]# |
위의 쉘프로그램을 설명하면 다음과 같습니다.
var1=0
var1변수의 초기값으로 0이 할당되었습니다.
until (( $var1 == 5 ))
var1의 변수값이 5와 같을 때까지 계속해서 반복합니다. 만약 var1값이 5가 되면 until반복문을 종료하고 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회 반복될 것입니다.
다음은 위의 until01.sh 쉘프로그램을 실행한 예입니다.
[root@command root]# ./until01.sh var1 value is 0 var1 value is 1 var1 value is 2 var1 value is 3 var1 value is 4 [root@command root]# |
위의 until01.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가 되었을 때 조건문이 참이 되어 until반복문이 종료됩니다.
그리고 done다음에 실행될 명령문이 없으므로 이 쉘프로그램은 종료됩니다.
관련자료
-
이전
-
다음