개발 환경 및 프로젝트 관리/Linux 개념

Bash 반복문 — while과 until의 차이

Data Jun 2025. 10. 8. 15:05

Bash에서 반복문(loop) 은 조건이 만족될 때까지 또는 만족하지 않을 때까지 코드를 반복 실행할 때 사용됩니다.
그중에서도 whileuntil 은 매우 유사하지만, 조건의 참/거짓 판단 기준이 반대라는 점이 핵심이에요.

 

 

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은 **“끝낼 조건”**을 중심으로 생각하면 됩니다.