Bash 스크립트 반복문

ShellBeginner
지금 연습하기

소개

이 실습에서는 Bash 스크립트에서 반복문을 사용하는 방법을 배웁니다. 반복문은 일련의 명령을 여러 번 반복할 수 있게 해주는 강력한 도구로, 스크립트를 훨씬 효율적이고 유연하게 만들어 줍니다. 여기서는 for, while, until 세 가지 유형의 반복문을 다룹니다. 또한 반복문 실행을 정밀하게 제어할 수 있는 breakcontinue 문에 대해서도 알아봅니다. 이 실습은 초보자를 위해 설계되었으며, 각 개념을 단계별로 친절하게 안내합니다.

이 과정은 학습과 실습을 돕기 위해 단계별 지침을 제공하는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 직접 경험을 쌓아보세요. 통계에 따르면 이 실습은 초급 수준이며, 98%의 높은 수료율과 학습자들로부터 100%의 긍정적인 평가를 받고 있습니다.

환경 설정하기

먼저 실습을 진행할 작업 환경을 준비해 보겠습니다. 반복문 실험 결과물을 저장할 새로운 디렉토리를 생성하겠습니다.

웹 IDE 의 터미널을 엽니다. 기본적으로 /home/labex/project 디렉토리에 위치해 있을 것입니다. 확실하지 않다면 다음 명령어를 입력하여 해당 위치로 이동할 수 있습니다.

cd /home/labex/project

이제 반복문 실습을 위한 전용 디렉토리를 만듭니다.

mkdir bash_loops
cd bash_loops

이 명령은 bash_loops라는 디렉토리를 생성하고 그 안으로 이동합니다. 앞으로 진행할 모든 반복문 실험은 이 디렉토리에서 이루어집니다.

이렇게 하는 이유는 무엇일까요? 스크립트를 별도의 디렉토리에 정리하는 습관은 매우 중요합니다. 작업 공간을 깔끔하게 유지하면 나중에 파일을 찾거나 관리하기가 훨씬 수월해지기 때문입니다.

for 반복문

for 반복문은 값의 목록을 순회할 때 사용합니다. "이 목록에 있는 각 항목에 대해 무언가를 실행하라"고 명령하는 것과 같습니다. for 반복문의 사용법을 보여주는 스크립트를 만들어 보겠습니다.

bash_loops 디렉토리에 for_loop.sh라는 새 파일을 생성합니다.

touch for_loop.sh

이제 웹 IDE 에서 for_loop.sh 파일을 열고 다음 내용을 입력합니다.

#!/bin/bash

## 배열의 이름을 순회하며 출력
echo "Looping through an array:"
NAMES=("Alice" "Bob" "Charlie" "David")
for name in "${NAMES[@]}"; do
  echo "Hello, $name!"
done

echo ## 가독성을 위해 빈 줄 출력

## 숫자 범위를 순회하며 출력
echo "Looping through a range of numbers:"
for i in {1..5}; do
  echo "Number: $i"
done

이 스크립트가 수행하는 작업을 살펴보겠습니다.

  1. 첫 번째 반복문은 이름이 담긴 배열을 훑어봅니다. 배열 내의 각 이름에 대해 인사말을 출력합니다.
  2. 두 번째 반복문은 {1..5}라는 범위를 사용하여 1 부터 5 까지 숫자를 셉니다.

"${NAMES[@]}" 구문이 생소할 수 있습니다. 여기서 @는 "배열의 모든 요소"를 의미하며, 따옴표와 중괄호는 각 요소에 공백이 포함되어 있더라도 하나의 독립된 항목으로 안전하게 처리되도록 보장합니다.

파일을 저장한 후, 다음 명령어로 실행 권한을 부여합니다.

chmod +x for_loop.sh

chmod +x 명령어는 파일을 실행 가능한 상태로 만들어 줍니다. 즉, 이 파일을 하나의 프로그램처럼 실행할 수 있게 됩니다.

이제 스크립트를 실행해 보세요.

./for_loop.sh

다음과 같은 결과가 출력될 것입니다.

Looping through an array:
Hello, Alice!
Hello, Bob!
Hello, Charlie!
Hello, David!

Looping through a range of numbers:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

이를 통해 for 반복문이 배열과 숫자 범위 모두를 어떻게 처리하는지 확인할 수 있습니다.

while 반복문

while 반복문은 지정된 조건이 참 (true) 인 동안 코드 블록을 계속해서 실행합니다. "이 조건이 맞는 동안에는 이 작업을 계속하라"는 의미입니다.

while_loop.sh라는 새 파일을 생성합니다.

touch while_loop.sh

웹 IDE 에서 while_loop.sh 파일을 열고 다음 내용을 추가합니다.

#!/bin/bash

## while 반복문을 이용한 간단한 카운트다운
count=5
echo "Countdown:"
while [ $count -gt 0 ]; do
  echo $count
  count=$((count - 1))
  sleep 1 ## 1초 대기
done
echo "Blast off!"

스크립트의 구성을 분석해 보겠습니다.

  1. count=5로 시작하여 카운트다운의 초기값을 설정합니다.
  2. 조건식 [ $count -gt 0 ]은 "변수 count 가 0 보다 큰 동안"을 의미합니다.
  3. 반복문 내부에서는 현재 숫자를 출력하고, 값을 1 씩 감소시킨 뒤 1 초 동안 기다립니다.
  4. 이 과정은 count 가 0 이 될 때까지 반복되며, 0 이 되면 반복문이 종료됩니다.

sleep 1 명령어는 스크립트 실행을 1 초간 일시 정지시켜 실제 카운트다운과 같은 효과를 줍니다.

파일을 저장하고 실행 권한을 부여합니다.

chmod +x while_loop.sh

이제 스크립트를 실행합니다.

./while_loop.sh

각 숫자 사이에 1 초의 간격을 두고 5 부터 1 까지 카운트다운되는 것을 볼 수 있습니다.

Countdown:
5
4
3
2
1
Blast off!

이 예제는 while 반복문이 조건이 더 이상 충족되지 않을 때까지 어떻게 동작을 반복하는지 잘 보여줍니다.

until 반복문

until 반복문은 while 반복문과 비슷하지만 중요한 차이점이 있습니다. 지정된 조건이 참이 될 때까지 실행을 계속한다는 점입니다. 즉, "이 조건이 참이 될 때까지 이 작업을 반복하라"는 뜻입니다.

until_loop.sh라는 새 파일을 생성합니다.

touch until_loop.sh

웹 IDE 에서 until_loop.sh 파일을 열고 다음 내용을 입력합니다.

#!/bin/bash

## until 반복문을 사용하여 5까지 숫자 세기
count=1
echo "Counting up to 5:"
until [ $count -gt 5 ]; do
  echo $count
  count=$((count + 1))
  sleep 1 ## 1초 대기
done

스크립트의 내용을 살펴보겠습니다.

  1. 초기값으로 count=1을 설정합니다.
  2. 조건식 [ $count -gt 5 ]는 "count 가 5 보다 커질 때까지"를 의미합니다.
  3. 반복문 내부에서 현재 숫자를 출력하고, 값을 1 씩 증가시킨 뒤 1 초간 대기합니다.
  4. count 가 5 보다 커지는 순간 (즉, 6 이 되는 순간) 반복문이 종료됩니다.

파일을 저장하고 실행 권한을 부여합니다.

chmod +x until_loop.sh

이제 스크립트를 실행해 보세요.

./until_loop.sh

1 초 간격으로 1 부터 5 까지의 숫자가 출력되는 것을 확인할 수 있습니다.

Counting up to 5:
1
2
3
4
5

이처럼 until 반복문은 특정 목표 조건이 달성될 때까지 작업을 반복해야 할 때 유용합니다.

break 와 continue 문 사용하기

breakcontinue 문은 반복문의 흐름을 세밀하게 제어하는 데 사용됩니다. break는 반복문을 즉시 빠져나오게 하고, continue는 현재 차례의 남은 코드를 건너뛰고 다음 반복으로 넘어갑니다.

break_continue.sh라는 새 파일을 생성합니다.

touch break_continue.sh

웹 IDE 에서 break_continue.sh 파일을 열고 다음 내용을 작성합니다.

#!/bin/bash

## break를 사용하여 반복문을 조기에 종료하기
echo "Demonstration of break:"
for i in {1..10}; do
  if [ $i -eq 6 ]; then
    echo "Breaking the loop at $i"
    break
  fi
  echo $i
done

echo ## 가독성을 위해 빈 줄 출력

## continue를 사용하여 특정 단계 건너뛰기 (홀수만 출력)
echo "Demonstration of continue (printing odd numbers):"
for i in {1..10}; do
  if [ $((i % 2)) -eq 0 ]; then
    continue
  fi
  echo $i
done

스크립트의 작동 원리는 다음과 같습니다.

  1. 첫 번째 반복문에서는 i가 6 이 되는 순간 break를 만나 반복문 전체를 종료합니다.
  2. 두 번째 반복문에서는 continue를 사용하여 짝수를 건너뜁니다. $((i % 2)) -eq 0 조건은 숫자를 2 로 나눈 나머지가 0 인지 (즉, 짝수인지) 확인합니다.

% 연산자는 나눗셈의 나머지를 계산합니다. 따라서 i % 2의 결과가 0 이면 짝수, 1 이면 홀수입니다.

파일을 저장하고 실행 권한을 부여합니다.

chmod +x break_continue.sh

이제 스크립트를 실행합니다.

./break_continue.sh

출력 결과는 다음과 같을 것입니다.

Demonstration of break:
1
2
3
4
5
Breaking the loop at 6

Demonstration of continue (printing odd numbers):
1
3
5
7
9

이를 통해 break가 반복문을 중단시키는 방식과 continue가 특정 조건에서 실행을 건너뛰는 방식을 명확히 이해할 수 있습니다.

요약

이 실습을 통해 Bash 스크립트의 세 가지 핵심 반복문에 대해 배웠습니다.

  1. for 반복문: 항목 목록이나 숫자 범위를 순회할 때 사용합니다.
  2. while 반복문: 조건이 참인 동안 계속해서 실행합니다.
  3. until 반복문: 조건이 참이 될 때까지 계속해서 실행합니다.

또한 반복문의 흐름을 자유자재로 조절할 수 있게 해주는 breakcontinue 문의 활용법도 익혔습니다.

이러한 반복 구조는 스크립트 작성의 기초이며, 반복적인 작업을 자동화하는 데 필수적입니다. 직접 다양한 스크립트를 작성해 보면서 각 반복문의 특성과 활용 사례를 몸소 익혀보시기 바랍니다.