bash 셸에서는 for, while, until 세 가지 루프 구문을 사용할 수 있습니다. 각 루프는 문법과 동작 방식에서 차이가 있지만, 공통적으로 특정 조건식을 평가하면서 코드 블록을 반복 실행한다는 목적을 가지고 있습니다.
until 루프는 조건식이 거짓(false)으로 평가되는 동안 코드 블록을 계속 실행합니다. 이는 while 루프와 정반대의 동작 방식입니다. while 루프는 조건이 참(true)인 동안 코드를 실행하는 반면, until 루프는 조건이 거짓인 동안 실행됩니다.
until 루프 기본 문법
until [ expression ] do code block ... ... done
문법 구조를 하나씩 살펴보겠습니다.
- 루프를 시작하려면
until키워드 뒤에 대괄호 또는 이중 대괄호로 감싼 조건식을 작성합니다. - 조건식은 코드 블록이 실행되기 위해서 거짓으로 평가되어야 합니다.
- 실제 실행할 코드 블록은
do와done사이에 위치합니다.
이번 글에서는 다음 예제들을 통해 쉘 스크립트에서 until 루프를 활용하는 방법을 알아보겠습니다.
1. 무한 루프 만들기
조건식 자리에 false 문을 넣으면 무한 루프를 만들 수 있습니다. 무한 루프를 테스트할 때는 sleep 명령어를 함께 사용하여 스크립트가 일정 주기마다 잠시 멈추도록 하는 것이 좋습니다.
count=0 until false do echo "Counter = $count" ((count++)) sleep 2 done
2. 한 줄로 루프 문장 작성하기
until 루프는 한 줄(single-line) 형태로도 작성할 수 있습니다. 아래 코드는 앞서 살펴본 무한 루프 예제와 동일한 내용을 한 줄로 표현한 것입니다. 이때 각 문장을 구분하기 위해 세미콜론 (;)을 사용해야 합니다.
# until false; do echo "Counter = $count"; ((count++)); sleep 2; done
3. break와 continue로 흐름 제어하기
until 루프 안에서도 break와 continue 문을 사용할 수 있습니다. break 문은 루프를 즉시 빠져나와 그다음 문장으로 제어를 넘기고, continue 문은 현재 반복을 건너뛰고 다음 반복을 시작합니다.
동일한 무한 루프 예제를 활용해 보겠습니다. 카운터 값이 5일 때는 continue 문이 실행되어 루프 본문의 나머지 부분을 건너뛰고 다음 반복으로 넘어갑니다. 마찬가지로 카운터 값이 10 이상이 되면 break 문에 의해 루프가 종료됩니다.
count=0
until false
do
((count++))
if [[ $count -eq 5 ]]
then
continue
elif [[ $count -ge 10 ]]
then
break
fi
echo "Counter = $count"
done
여기까지 until 루프의 핵심 내용을 살펴보았습니다. 무한 루프 생성부터 한 줄 문장 작성, break와 continue를 활용한 흐름 제어까지 익혔다면 실제 스크립트 작성 시 큰 도움이 될 것입니다. 다음에도 유용한 글로 찾아오겠습니다. 그때까지 꾸준히 읽고 지원해 주세요!