개발/Bash 쉘스크립트

[Bash] 리눅스 쉘 스크립트: while 문 기본 사용 법 및 옵션 까지 모두 정리

일요일좋아하는사람 2025. 5. 4. 13:39
728x90
반응형

Bash 스크립트에서 반복 조건이 참일 동안 계속해서 명령을 실행하고 싶을 때 사용하는 반복문이 바로 while 문입니다. 조건 기반 반복문으로써, 조건이 거짓이 될 때까지 계속해서 루프를 실행하며 다양한 자동화 작업에서 핵심적인 역할을 합니다. 이 글에서는 while 반복문의 역할, 다양한 사용법, 옵션들, 그리고 실제 예제까지 자세히 다루어 보겠습니다.

Bash에서 while 반복문의 역할

while 반복문은 지정된 조건이 참(true)인 동안 루프 내의 명령들을 반복 실행합니다. 이는 사용자의 입력을 기다리거나, 특정 파일이 생성될 때까지 대기하거나, 지정된 조건이 충족될 때까지 반복 작업을 수행하는 데 매우 유용합니다.

while 반복문의 기본 사용법

기본 구조는 다음과 같습니다:

while [ 조건 ]; do
  명령어들
done

예제:

count=1
while [ $count -le 5 ]; do
  echo "현재 숫자: $count"
  count=$((count + 1))
done

결과:

현재 숫자: 1
현재 숫자: 2
현재 숫자: 3
현재 숫자: 4
현재 숫자: 5

while 반복문 관련 사용법 및 옵션들

1. 조건 검사 반복

역할: 주어진 조건이 참일 동안 반복 수행
사용법:

while [ 조건 ]; do ... done

예제:

n=3
while [ $n -gt 0 ]; do
  echo "$n 초 남음"
  sleep 1
  n=$((n - 1))
done
echo "완료!"

결과:

3 초 남음
2 초 남음
1 초 남음
완료!

2. 무한 루프

역할: 조건을 항상 참으로 유지하여 무한 반복
사용법:

while true; do ... done

예제:

while true; do
  echo "Ctrl+C를 눌러 종료하세요."
  sleep 2
done

결과: 사용자가 강제로 종료할 때까지 계속 출력합니다.

3. 파일 존재 확인 루프

역할: 특정 파일이 생성될 때까지 대기
사용법:

while [ ! -f filename ]; do ... done

예제:

while [ ! -f "done.txt" ]; do
  echo "파일을 기다리는 중..."
  sleep 1
done
echo "파일이 생성되었습니다."

결과: done.txt 파일이 생성될 때까지 대기합니다.

4. 사용자 입력 반복

역할: 사용자의 유효한 입력이 들어올 때까지 반복
사용법:

while [ 조건 ]; do ... done

예제:

input=""
while [ "$input" != "yes" ]; do
  read -p "계속하시겠습니까? (yes 입력): " input
done
echo "진행합니다."

결과: 사용자가 "yes"를 입력할 때까지 질문을 반복합니다.

5. 명령어 결과 기반 반복

역할: 특정 명령어가 실패할 때까지 반복
사용법:

while command; do ... done

예제:

while ping -c 1 google.com > /dev/null 2>&1; do
  echo "인터넷 연결 확인됨."
  sleep 5
done
echo "인터넷 연결 끊김."

결과: 인터넷이 연결되어 있는 동안 메시지를 출력하다가 끊기면 종료합니다.

실제 사용 예제와 결과

예제 스크립트: 로그인 시도 루프

#!/bin/bash

correct_pwd="1234"
attempts=0

while true; do
  read -sp "비밀번호를 입력하세요: " input_pwd
  echo
  attempts=$((attempts + 1))

  if [ "$input_pwd" == "$correct_pwd" ]; then
    echo "로그인 성공"
    break
  else
    echo "비밀번호가 틀렸습니다. ($attempts 회 시도)"
  fi

  if [ $attempts -ge 3 ]; then
    echo "최대 시도 횟수 초과. 프로그램을 종료합니다."
    break
  fi
done

결과:

  • 비밀번호가 일치할 경우: "로그인 성공"
  • 3회 틀릴 경우: "최대 시도 횟수 초과. 프로그램을 종료합니다."

Bash의 while 반복문은 조건에 따라 유연하게 반복을 제어할 수 있다는 점에서 매우 강력합니다. 특히 사용자 입력, 파일 상태, 외부 명령어 결과 등을 실시간으로 모니터링하며 반복 제어가 가능하기 때문에 실무에서도 자주 활용됩니다.

728x90
반응형