반복문은 모든 프로그래밍 언어에서 핵심적인 요소입니다. 이러한 반복문을 통해 프로그램은 정해진 횟수만큼 특정 작업을 반복 수행할 수 있습니다.
예를 들어, ‘n’개의 항목으로 구성된 목록이나 배열을 처리해야 할 때, 반복문이 매우 유용합니다. 간단한 예시를 들어보겠습니다.
1 | 보라색 |
2 | 남색 |
3 | 파란색 |
4 | 녹색 |
레인보우 테이블 |
위 표의 항목들을 순회하거나 특정 작업을 반복하려면 반복문이 필요합니다.
Bash 반복문
Bash 스크립트에서 반복문의 기본 구조는 다음과 같습니다.
#!/bin/bash for 변수 in 1 2 3 4 5.....N do 명령어1 명령어2 ..... done
Bash 반복문의 구조는 간단합니다. 첫 줄의 #!/bin/bash
는 해당 코드가 Bash 스크립트임을 나타냅니다. 변수
는 반복문 내에서 사용될 임시 변수를 의미합니다. N
은 반복 횟수의 최댓값을 나타냅니다. do
와 done
은 각각 반복문의 시작과 끝을 표시하며, 그 사이에는 반복적으로 실행될 명령어들이 위치합니다.
Bash 반복문은 목록, 문자열, 정수, 배열 등 다양한 형태의 데이터를 처리할 수 있습니다. 이 글에서는 Bash 반복문의 여러 일반적인 사용 예시를 살펴보겠습니다.
이러한 예시들은 Bash 명령줄에서 직접 실행하거나 파일에 저장한 후 bash 파일이름.sh
명령을 사용하여 실행할 수 있습니다.
정적 목록 순회
다음과 같은 목록이 있다고 가정해 봅시다: rainbowColorList = 보라색, 남색, 파란색, 녹색, 노란색, 주황색, 빨간색
이 문자열 목록은 Bash 반복문을 사용하여 다음과 같이 출력할 수 있습니다.
#! /bin/sh # 목록 정의 rainbowColorList=보라색,남색,파란색,녹색,노란색,주황색,빨간색 # 쉼표를 공백으로 대체 for colors in ${rainbowColorList//,/ } do echo $colors done
이 코드는 각 항목을 새로운 줄에 출력합니다.
# 출력 보라색 남색 파란색 녹색 노란색 주황색 빨간색
배열 순회
배열을 선언하는 방식은 조금 다릅니다. 각 요소(문자열)를 괄호로 묶어줘야 합니다.
rainbowArray=("보라색" "남색" "파란색" "녹색" "노란색" "주황색" "빨간색") for colors in "${rainbowArray[@]}"; do echo "나는 $colors 색깔을 좋아해" done
여기서 @
기호는 배열의 모든 요소를 순회하는 데 사용됩니다.
# 출력 나는 보라색 색깔을 좋아해 나는 남색 색깔을 좋아해 나는 파란색 색깔을 좋아해 나는 녹색 색깔을 좋아해 나는 노란색 색깔을 좋아해 나는 주황색 색깔을 좋아해 나는 빨간색 색깔을 좋아해
반복문을 사용하여 배열의 인덱스와 해당 요소를 함께 출력할 수도 있습니다.
# 인덱스와 함께 출력 rainbowArray=("보라색" "남색" "파란색" "녹색" "노란색" "주황색" "빨간색") for i in "${!rainbowArray[@]}"; do echo "인덱스 $i 의 색상 : " "${rainbowArray[$i]}" i=$((i+1)); done
# 출력 인덱스 0 의 색상 : 보라색 인덱스 1 의 색상 : 남색 인덱스 2 의 색상 : 파란색 인덱스 3 의 색상 : 녹색 인덱스 4 의 색상 : 노란색 인덱스 5 의 색상 : 주황색 인덱스 6 의 색상 : 빨간색
!
기호를 사용하면 반복문 내에서 요소의 인덱스를 얻을 수 있습니다.
숫자 범위 순회
Bash 반복문을 사용하여 특정 숫자 범위 내에서 반복 작업을 수행할 수 있습니다.
# 숫자 범위 순회 echo "카운트다운 시작..." for N in {10..0} do echo "$N" done
여기서 ..
는 숫자 범위를 나타냅니다.
# 출력 10 9 8 7 6 5 4 3 2 1 0
범위를 지정할 때 특정 간격으로 건너뛸 수도 있습니다.
아래 예에서는 3씩 건너뛰면서 카운트합니다.
# 건너뛰기 카운트 순회 echo "카운트다운 시작..." for N in {30..0..3} do echo "$N" done
위 코드는 30부터 시작하여 0까지 3씩 감소하면서 숫자를 출력합니다. 반복문의 마지막 매개변수 3
이 건너뛰기 간격을 지정합니다.
# 출력 30 27 24 21 18 15 12 9 6 3 0
문자열 및 문자 순회
Bash 반복문을 사용하면 문자열에 대한 다양한 흥미로운 작업을 수행할 수 있습니다.
예를 들어, seq
연산자를 사용하여 문자열의 각 문자를 개별적으로 읽을 수 있습니다.
# 문자열의 문자 읽기 myword="환영합니다" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
첫 번째 문자부터 읽기 위해서는 seq
가 1부터 시작해야 합니다.
# 출력 환 영 합 니 다
공백으로 구분된 문자열에서 각 단어를 차례로 출력할 수도 있습니다.
# 문장에서 각 단어 읽기 mysentence="koreantech.org에 오신 것을 환영합니다. 모든 기술자를 위한 원스톱 허브입니다." for word in $mysentence; do echo $word done
# 출력 koreantech.org에 오신 것을 환영합니다. 모든 기술자를 위한 원스톱 허브입니다.
표현식 활용
Java와 같은 다른 프로그래밍 언어와 마찬가지로, Bash 반복문 내에서 표현식을 사용할 수 있습니다.
for (( var=10; var>=0; var-- )) do echo "카운트다운...$var" done
# 출력 카운트다운...10 카운트다운...9 카운트다운...8 카운트다운...7 카운트다운...6 카운트다운...5 카운트다운...4 카운트다운...3 카운트다운...2 카운트다운...1 카운트다운...0
명령줄 인수 읽기
명령줄에서 인수를 읽으려면 read
명령을 사용합니다. 아래 예에서는 사용자로부터 숫자를 입력받아 반복문을 사용하여 합계를 계산합니다. total
변수에 중간 및 최종 합계를 저장합니다.
read -a array -p "더할 숫자를 입력하세요:" total=0 for i in ${array[@]}; do let total+=$i done echo "숫자들의 합계는: $total"
출력 결과는 다음과 같습니다.
# 출력 더할 숫자를 입력하세요: 3 4 66 숫자들의 합계는: 73
홀수와 짝수 찾기
1부터 10까지(또는 N까지)의 범위에서 홀수와 짝수를 찾으려면 반복문과 함께 if
조건을 사용해야 합니다. 숫자를 2로 나눈 나머지가 0이면 짝수, 그렇지 않으면 홀수로 분류합니다.
# 홀수와 짝수를 저장할 목록 선언 evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "짝수 목록: "$evennum echo "홀수 목록: "$oddnum
위 예에서는 범위를 10으로 설정했지만, 이 숫자를 변경하여 원하는 범위의 홀수와 짝수를 구할 수 있습니다. 이전 섹션에서 배운 read
명령을 사용하여 사용자로부터 범위를 입력받을 수도 있습니다.
# 출력 짝수 목록: 2 4 6 8 10 홀수 목록: 1 3 5 7 9
무한 루프
무한 루프는 멈추지 않고 계속 실행되는 루프이며, 프로그램을 강제로 멈추려면 Ctrl+C를 사용해야 합니다. ;;
연산자를 사용하면 쉽게 무한 루프를 만들 수 있습니다.
for (( ; ; )) do echo "koreantech.org에 오신 것을 환영합니다." done
# 출력 koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. koreantech.org에 오신 것을 환영합니다. ^C $
중단문
break
문은 if
조건이 충족될 때 반복문을 즉시 종료하는 데 사용됩니다.
for color in 보라색 남색 파란색 녹색 노란색 주황색 빨간색 do if [[ "$color" == '녹색' ]]; then break fi echo "녹색을 찾는 중... 현재 색상: $color" done echo "녹색을 찾았습니다! $color"
이 예시에서는 녹색을 찾기 위해 반복문을 사용합니다. 녹색을 찾으면 break
문이 실행되어 프로그램이 반복문을 빠져나옵니다.
# 출력 녹색을 찾는 중... 현재 색상: 보라색 녹색을 찾는 중... 현재 색상: 남색 녹색을 찾는 중... 현재 색상: 파란색 녹색을 찾았습니다! 녹색
계속문
continue
문은 특정 조건에 따라 현재 반복을 건너뛰고 다음 반복으로 이동하는 데 사용됩니다. 예를 들어, 이전 예시에서 ‘녹색’을 출력하지 않으려면 continue
문을 사용하여 녹색을 제외한 다른 모든 색상을 출력할 수 있습니다.
for color in 보라색 남색 파란색 녹색 노란색 주황색 빨간색 do if [[ "$color" == '녹색' ]]; then continue fi echo "$color" done
# 출력 보라색 남색 파란색 노란색 주황색 빨간색
마무리
문자열, 정수, 배열, 목록 등을 활용한 Bash 반복문의 일반적인 사용법을 살펴보았습니다. Linux를 배우고 있지만 Windows 10 시스템을 사용 중이라면 WSL 기능을 사용하여 Windows 시스템에 Linux를 설치할 수 있습니다.
이후에는 CMD와 유사한 방식으로 Linux 터미널을 사용할 수 있습니다.
다음으로는 Python을 사용하여 bash 스크립트를 실행하는 방법을 알아보실 수 있습니다.