iBetter Books
수정

break와 continue

루프가 항상 처음부터 끝까지 순서대로 실행되어야 하는 것은 아닙니다. 특정 조건이 만족되면 루프를 일찍 끝내거나, 현재 반복을 건너뛰고 다음으로 넘어가야 할 때가 있습니다. breakcontinue가 그 역할을 합니다.

break

break는 루프를 즉시 빠져나갑니다. for, while, until, select 모두에서 사용할 수 있습니다.

for i in {1..10}; do    if [[ $i -eq 5 ]]; then        echo "5에서 중단"        break    fi    echo "i = $i"doneecho "루프 종료"

실행 결과는 다음과 같습니다.

i = 1
i = 2
i = 3
i = 4
5에서 중단
루프 종료

5를 만나는 순간 break가 실행되어 루프를 빠져나옵니다. 6~10은 실행되지 않습니다.

continue

continue는 현재 반복의 나머지 코드를 건너뛰고 다음 반복으로 넘어갑니다. 루프 자체는 계속됩니다.

for i in {1..8}; do    if [[ $((i % 2)) -eq 0 ]]; then        continue    # 짝수는 건너뜀    fi    echo "홀수: $i"done

실행 결과는 다음과 같습니다.

홀수: 1
홀수: 3
홀수: 5
홀수: 7

짝수를 만나면 echo를 건너뛰고 다음 반복으로 이동합니다.

중첩 루프에서 break N

루프 안에 루프가 있는 중첩 구조에서, break는 기본적으로 가장 안쪽 루프만 탈출합니다. break N을 쓰면 N개의 루프를 탈출합니다.

for i in {1..3}; do    for j in {1..3}; do        if [[ $i -eq 2 && $j -eq 2 ]]; then            echo "i=$i, j=$j: 바깥 루프까지 탈출"            break 2     # 2개의 루프를 탈출        fi        echo "i=$i, j=$j"    donedoneecho "완전히 종료"

실행 결과는 다음과 같습니다.

i=1, j=1
i=1, j=2
i=1, j=3
i=2, j=1
i=2, j=2: 바깥 루프까지 탈출
완전히 종료

break 2가 실행되자 안쪽 for와 바깥쪽 for 모두 종료되었습니다. break 1break와 동일합니다.

continue N도 마찬가지로 N번째 바깥 루프의 다음 반복으로 이동합니다.

실습. 구구단 출력 (특정 배수 건너뛰기)

구구단을 출력하되 5의 배수 결과는 건너뛰고, 50 이상이 나오면 해당 단을 중단하는 스크립트입니다.

#!/bin/bash# 새 파일: scripts/gugudan.shecho "구구단 (5의 배수 결과 건너뜀, 50 이상이면 해당 단 중단)"echo "============================================================"for ((i=2; i<=9; i++)); do    echo "--- ${i}단 ---"    for ((j=1; j<=9; j++)); do        result=$((i * j))        if [[ $result -ge 50 ]]; then            echo "  ${i} × ${j} = ${result} (50 이상, 중단)"            break   # 안쪽 루프 탈출        fi        if [[ $((result % 5)) -eq 0 ]]; then            echo "  ${i} × ${j} = ${result} (5의 배수, 건너뜀)"            continue        fi        echo "  ${i} × ${j} = ${result}"    donedone

실행 결과는 다음과 같습니다.

구구단 (5의 배수 결과 건너뜀, 50 이상이면 해당 단 중단)
============================================================
--- 2단 ---
  2 × 1 = 2
  2 × 2 = 4
  2 × 3 = 6
  2 × 4 = 8
  2 × 5 = 10 (5의 배수, 건너뜀)
  2 × 6 = 12
  2 × 7 = 14
  2 × 8 = 16
  2 × 9 = 18
--- 3단 ---
  3 × 1 = 3
  3 × 2 = 6
  3 × 3 = 9
  3 × 4 = 12
  3 × 5 = 15 (5의 배수, 건너뜀)
  3 × 6 = 18
  3 × 7 = 21
  3 × 8 = 24
  3 × 9 = 27
...
--- 6단 ---
  6 × 1 = 6
  6 × 2 = 12
  6 × 3 = 18
  6 × 4 = 24
  6 × 5 = 30 (5의 배수, 건너뜀)
  6 × 6 = 36
  6 × 7 = 42
  6 × 8 = 48
  6 × 9 = 54 (50 이상, 중단)
--- 7단 ---
  7 × 1 = 7
...
  7 × 7 = 49
  7 × 8 = 56 (50 이상, 중단)

6단에서 6×9=54가 50 이상이므로 break로 6단이 중단되지만, 7단은 정상적으로 시작합니다. 안쪽 루프만 탈출했기 때문입니다.