logo

Bash 스크립팅 – For 루프

BASH는 명령줄 언어이므로 프로그래밍 기술을 활용하여 터미널에서 작업을 수행할 수 있는 매우 풍부한 기능을 경험하게 됩니다. BASH 스크립트에서 루프와 조건문을 사용하여 간단한 프로그래밍 방식으로 일부 반복적이고 까다로운 문제를 수행할 수 있습니다. 이번 글에서는 다음 사항에 중점을 두고자 합니다. for 루프 BASH 스크립트에서.

사용 사례와 자동화하려는 문제에 따라 루프를 사용하는 몇 가지 방법이 있습니다.

  • 간단한 For 루프
  • 범위 기반 for 루프
  • 루프에 대한 배열 반복
  • C 스타일 for 루프
  • 무한 for 루프

간단한 For 루프

for 루프를 실행하려면 다음 구문을 작성할 수 있습니다.



#!/bin/bash  for n in a b c; do  echo $n done>
  • 첫 번째 반복에서는n>a 값을 취하고 스크립트는 a를 인쇄합니다.
  • 두 번째 반복에서는n>b 값을 취하고 스크립트는 b를 인쇄합니다.
  • 세 번째 반복에서는n>c 값을 취하고 스크립트는 c를 인쇄합니다.

501

위 명령은 지정된 요소에 대해 반복됩니다. ~에 키워드를 하나씩. 요소는 숫자, 문자열 또는 기타 형태의 데이터일 수 있습니다.

범위 기반 for 루프

범위 기반 for 루프를 사용할 수 있습니다. 이 유형의 루프에서는 명령문의 모든 반복(선택 사항)에서 시작, 중지 및 증가할 숫자를 지정할 수 있습니다. 이를 수행할 수 있는 두 가지 방법이 있습니다. 즉, 증가/감소 값을 언급하는 것과 기본적으로 1씩 증가하는 것입니다. 구문은 다음과 같습니다.

#!/bin/bash  for n in {1..5};  do  echo $n done>

500

위 코드에서는 {}를 사용하여 숫자 범위를 지정합니다. 중괄호 안에 시작점과 점 두 개, 끝점을 지정합니다. 기본적으로 1씩 증가합니다. 따라서 1부터 5까지 5개의 숫자를 인쇄합니다.

#!/bin/bash  for n in {1..5..2};  do  echo $n done>

502

여기서 우리는 중괄호에서 언급한 것처럼 루프가 2단위만큼 증가한 것을 볼 수 있습니다. 따라서 숫자 작업이 매우 쉽고 편리해집니다. 이는 알파벳 문자와 함께 사용할 수도 있습니다.

메모: 중괄호 안에는 변수를 사용할 수 없으므로 값을 하드코딩해야 합니다. 변수를 사용하기 위해 다음 몇 섹션에서 전통적인 C 스타일 for 루프를 볼 수 있습니다.

루프에 대한 배열 반복

특정 구문이 있는 for 루프를 사용하여 bash에서 편리하게 배열을 반복할 수 있습니다. BASH의 특수 변수, 즉 @를 사용하여 배열의 모든 요소에 액세스할 수 있습니다. 코드를 살펴보겠습니다:

#!/bin/bash  s=('football' 'cricket' 'hockey')  for n in ${s[@]};  do  echo $n done>

503

배열의 모든 요소를 ​​가져오는 @ 연산자를 사용하여 배열 요소를 반복할 수 있습니다. 따라서 for 루프를 사용하여 하나씩 반복합니다. 여기서 중괄호는 문자열 배열인 변수 s의 값을 확장하는 ${variable_name[@]} 변수를 사용합니다. [@] 연산자를 사용하여 모든 요소에 액세스하고 for 루프에서 해당 요소를 반복합니다. 여기서는 N 는 반복자이므로 값을 인쇄하거나 이에 대해 필요한 처리를 수행할 수 있습니다.

C 스타일 for 루프

앞서 말했듯이, 요소 범위를 반복하려면 for 루프 내부의 변수를 사용해야 합니다. 따라서 C 스타일의 for 루프는 매우 중요한 역할을 합니다. 우리가 그것들을 어떻게 사용하는지 봅시다.

#!/bin/bash  n=7 for (( i=1 ; i<=$n ; i++ ));  do  echo $i done>

504

보시다시피 끝 조건 범위의 값을 동적으로 사용할 수 있습니다. 이중 중괄호 사이의 공백은 의도적일 수 있으며 구문의 일부라는 점을 기억하세요. C 스타일의 for 루프는 초기화 반복자, 증가/감소자 및 종료 조건의 세 부분으로 구성된 루프입니다.

위 구문에서는 루프 반복자/카운터를 선택에 따라 무엇이든 될 수 있는 1로 초기화했습니다. 두 번째 부분은 종료 조건입니다. 여기서는 변수를 사용했습니다. N 이는 for 루프 이전에 초기화되므로 간단한 $ 변수의 값을 가져오는 연산자입니다. 마지막으로 반복자/카운터를 무엇이든 될 수 있는 값으로 변경하는 증감기/감소기가 있습니다. 단, 예제에서는 단항 연산자를 사용했습니다. (++) 에 해당하는 값만큼 값을 증가시키려면 나=나+1 . 따라서 우리는 다음과 같은 진술을 사용할 수 있습니다. 나는+=2, 나는–,++i, 등등.

무한 for 루프

우리는 이것을 자주 사용하지 않지만 때로는 특정 작업을 수행하는 데 유용합니다. 구문은 매우 쉽고 C 스타일 for 루프와 유사합니다.

#!/bin/bash  n=4 for (( ; ; ));  do  if [ $n -eq 9 ];then  break  fi  echo $n  ((n=n+1)) done>

루프는 다음으로 시작됩니다.n>4로 설정합니다. 증가합니다.n>각 반복마다 1씩 씩 값을 인쇄합니다.n>~까지n>9와 같아진다.n>9에 도달하면break>명령문이 실행되고 루프가 종료됩니다. 숫자 4~8을 인쇄한 후 스크립트가 중지됩니다.

505

보시다시피 `for` 루프에는 조건이 없으며 이 루프는 영원히 반복되지만 영원히 계속되지 않는지 확인하는 조건문이 있습니다. 루프에서 벗어나 반복자와의 반복을 중지하기 위해 if 문 내부에 break 문을 사용합니다. 루프에서 변수를 증가시키기 위해 증분기를 사용했습니다. 그렇지 않으면 루프는 무한합니다. 물론 루프를 벗어나려면 몇 가지 논리가 필요하며 이것이 바로 if 조건문을 사용해야 하는 이유입니다.