웹사이트 검색

Linux에서 Bash For 루프를 사용하는 방법: 초보자를 위한 튜토리얼


프로그래밍 언어에서 루프는 필수 구성 요소이며 지정된 조건이 충족될 때까지 코드를 계속해서 반복하려고 할 때 사용됩니다.

Bash 스크립팅에서 루프는 거의 동일한 역할을 하며 프로그래밍 언어에서와 마찬가지로 반복적인 작업을 자동화하는 데 사용됩니다.

Bash 스크립팅에는 for 루프, while 루프, until의 3가지 유형의 루프가 있습니다. 루프. 세 가지는 값 목록을 반복하고 지정된 명령 집합을 수행하는 데 사용됩니다.

이 가이드에서는 Linux의 Bash For Loop에 중점을 둘 것입니다.

Bash For 루프 구문

앞서 언급했듯이 for 루프는 값 범위를 반복하고 일련의 Linux 명령을 실행합니다.

For 루프는 다음 구문을 사용합니다.

for variable_name in value1 value2 value3  .. n
do
    command1
    command2
    commandn
done

이제 bash for 루프의 몇 가지 예제 사용법을 확인해 보겠습니다.

Bash For 루프 예제

가장 간단한 형태의 for 루프는 다음과 같은 기본 형식을 사용합니다. 이 예에서 변수 n은 중괄호로 묶인 숫자 값 그룹을 반복하고 해당 값을 stdout에 인쇄합니다.

for n in {1 2 3 4 5 6 7};
do
   echo $n
done

범위가 있는 Bash For 루프

이전 예에서는 for 루프에 의해 반복될 값을 명시적으로 나열했는데, 이는 잘 작동합니다. 그러나 예를 들어 100개의 값을 반복하는 경우 작업이 얼마나 번거롭고 시간이 많이 걸릴지 상상할 수 있습니다. 이렇게 하면 1부터 100까지의 모든 값을 입력해야 합니다.

이 문제를 해결하려면 범위를 지정하세요. 이렇게 하려면 시작 및 중지할 숫자를 두 개의 마침표로 구분하여 지정하세요.

이 예에서 1은 범위의 첫 번째 값이고 7은 마지막 값입니다.

#!/bin/bash

for n in {1..7};
do
   echo $n
done

셸 스크립트가 실행되면 간단한 루프에서와 유사하게 범위의 모든 값이 나열됩니다.

또한 for 루프가 증분 단계에서 값을 반복하도록 하는 값을 범위 끝에 포함할 수 있습니다.

다음 bash 스크립트는 첫 번째 값부터 시작하는 값 사이에 2개의 증분 단계를 포함하여 1에서 7 사이의 값을 인쇄합니다.

#!/bin/bash

for n in {1..7..2};
do
   echo $n
done

위의 예에서 루프가 중괄호 안의 값을 2만큼 증가시키는 것을 볼 수 있습니다.

배열을 사용한 Bash For 루프

for 루프를 사용하여 배열에 정의된 값을 쉽게 반복할 수도 있습니다. 다음 예에서 for 루프과일 배열 내부의 모든 값을 반복하고 이를 stdout에 인쇄합니다.

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[@]}; 
do
    echo $n
done

@ 연산자는 모든 요소에 액세스하거나 대상을 지정합니다. 이렇게 하면 모든 요소를 하나씩 반복할 수 있습니다.

또한 배열 내 위치를 지정하여 단일 요소에 액세스할 수 있습니다.

예를 들어 'mango' 요소에 액세스하려면 @ 연산자를 배열의 요소 위치로 바꿉니다. 첫 번째 요소는 0에서 시작하므로 이 경우에는 '망고'는 2)로 표시됩니다.

이것이 for 루프의 모습입니다.

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[2]}; 
do
    echo $n
done

Bash C 스타일 For 루프

루프 내에서 변수를 사용하여 다양한 요소를 반복할 수 있습니다. 이것이 C 스타일 for 루프가 필요한 곳입니다. 다음 예는 1부터 7까지의 숫자 값 목록을 인쇄하는 C 스타일 for 루프를 보여줍니다.

#!/bin/bash

n=7
for (( n=1 ; n<=$n ; n++ )); 
do
    echo $n
done

조건문이 포함된 Bash C 스타일 For 루프

C 스타일 for 루프 내에 조건문을 포함할 수 있습니다. 다음 예에는 1과 7 사이의 짝수와 홀수를 확인하고 인쇄하는 if-else 문이 포함되어 있습니다.

#!/bin/bash

for (( n=1; n<=7; n++ ))
do  
    # Check if the number is even or not
    if (( $n%2==0 ))
    then
        echo "$n is even"
    else
        echo "$n is odd"
    fi  
done

Bash For 루프와 함께 'Continue' 문 사용

'계속' 문은 스크립트 실행 방법을 제어하는 내장 명령입니다. Bash 스크립팅 외에도 Python 및 Java와 같은 프로그래밍 언어에서도 사용됩니다.

continue 문은 특정 조건이 충족되면 루프 내에서 현재 반복을 중단한 다음 반복을 다시 시작합니다.

아래에 표시된 for 루프를 고려해 보세요.

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
              echo "Target $n has been reached"
              continue
        fi
        echo $n
done

코드의 기능은 다음과 같습니다.

  • 2행: for 루프의 시작을 표시하고 변수 n을 1에서 10까지 반복합니다.
  • 4행: n 값을 확인하고 변수가 6과 같으면 스크립트는 stdout에 메시지를 에코하고 2행의 다음 반복에서 루프를 다시 시작합니다.
  • 9행: 4행의 조건이 false인 경우에만 값을 화면에 인쇄합니다.

다음은 스크립트를 실행한 후 예상되는 출력입니다.

Bash For 루프에 'break' 문 사용

'break' 문은 이름에서 알 수 있듯이 조건이 충족되면 반복을 중지하거나 종료합니다.

아래의 For 루프를 고려해 보세요.

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
                echo "Target $n has been reached"
                break
        fi
        echo $n
done
echo "All done"

코드의 기능은 다음과 같습니다.

  • 2행: for 루프의 시작을 표시하고 변수 n을 1에서 10까지 반복합니다.
  • 4행: n 값을 확인하고 변수가 6과 같으면 스크립트는 메시지를 stdout에 에코하고 반복을 중지합니다.
  • 9행: 4행의 조건이 거짓인 경우에만 화면에 숫자를 인쇄합니다.

출력에서 변수가 루프 조건을 충족하면 루프가 중지되는 것을 볼 수 있습니다.

결론

Bash For 루프에 대한 튜토리얼이었습니다. 이 정보가 도움이 되었기를 바랍니다. 여러분의 의견을 자유롭게 반영해 주세요.