Bash에서 반복문(loop) 은 조건이 만족될 때까지 또는 만족하지 않을 때까지 코드를 반복 실행할 때 사용됩니다.
그중에서도 while 과 until 은 매우 유사하지만, 조건의 참/거짓 판단 기준이 반대라는 점이 핵심이에요.
while 문 — “조건이 참이면 반복”
while문은 test-commands가 참(0, 성공) 인 동안 계속 루프를 수행합니다.
while [ test-commands ]
do
commands...
done
예를 들어, 1부터 5까지 출력하는 스크립트는 다음과 같습니다 👇
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "Number: $num"
((num++))
done
포인트 정리
- 조건이 참일 때 루프가 계속된다.
- 조건이 거짓이 되면 루프를 빠져나온다.
- [ ] 안에는 반드시 공백이 있어야 한다! → [ $num -le 5 ] ✅ / [$num -le 5] ❌
until 문 — “조건이 거짓이면 반복”
until문은 while의 반대입니다.
즉, 조건이 거짓일 때 반복하고, 참이 되면 종료합니다.
until [ test-commands ]
do
commands...
done
예를 들어, 위의 예제를 until로 바꾸면 👇
#!/bin/bash
num=1
until [ $num -gt 5 ]
do
echo "Number: $num"
((num++))
done
결과는 while문과 동일하게 1~5까지 출력되지만,
조건의 판단 기준이 반대라는 점이 중요합니다.
while vs until 비교 요약
| 구분 | 반복 조건 | 종료 시점 | 예시 |
| while | 조건이 참일 때 반복 | 조건이 거짓이 되면 종료 | [ $count -le 10] |
| until | 조건이 거짓일 때 반복 | 조건이 참이 되면 종료 | [ $count -gt 10] |
즉,
✅ while: "참일 동안 반복"
✅ until: "거짓일 동안 반복"
실전 예시: 파일이 생길 때까지 대기하기
서버 작업 자동화할 때 자주 쓰이는 패턴입니다 👇
until [ -f "/tmp/done.txt" ]
do
echo "Waiting for file..."
sleep 2
done
echo "File detected! Proceeding..."
-f는 파일 존재 여부를 검사하는 연산자입니다.
(→ File test operators 부분에서 자세히 다룸)
이 스크립트는 /tmp/done.txt 파일이 존재하지 않으면 대기,
파일이 생기면 루프를 빠져나와 실행을 이어갑니다.
정리하면
while은 **“계속 진행할 조건”**을 until은 **“끝낼 조건”**을 중심으로 생각하면 됩니다.
'개발 환경 및 프로젝트 관리 > Linux 개념' 카테고리의 다른 글
| Bash 환경 변수(Environment Variable) 정리 (0) | 2025.10.09 |
|---|---|
| Bash에서의 함수 선언과 사용 (0) | 2025.10.09 |
| Bash의 for 반복문 완벽 정리 (0) | 2025.10.08 |
| Bash의 Logical AND / OR (논리 연산자) (0) | 2025.10.08 |
| Bash에서 파일 테스트 연산자 (File Test Operators) (0) | 2025.10.08 |