Linux

for in 루프에 대한 Python 스타일

빼이 2020. 10. 13. 15:30
반응형

Python 스타일 for in 루프의 사용법은 다음과 같습니다.

  • VALUE_LIST에서 변수
  • do
  •     statements
  • done

variable은 변수, value_list는 값 목록, in은 Shell의 키워드입니다.

  • in value_list 부분은 생략 할 수 있습니다. 생략 된 효과는 $ @에서와 동일합니다.이 기사의 마지막에있는 " value_list using special variables " 에 대해 자세히 설명합니다.

각 루프는 value_list에서 값을 가져와 변수 변수에 할당 한 다음 루프 본문 (do와 done 사이의 부분)을 입력하여 루프 본문에서 명령문을 실행합니다. value_list의 모든 값을 가져올 때까지 루프가 끝납니다.


루프 내 쉘의 예 :

  1. #! / bin / bash
  2. sum = 0
  3. for n in  1  2  3  4  5  6
  4. do
  5.     echo $ n
  6.      (( sum + = n ))
  7. done
  8. echo "합은" $ sum

실행 결과 :

1

2

3

4

5

6

합이 21


★ value_list에 대한 설명

value_list에는 다양한 형태가 있으며, 특정 값을 직접 제공 할 수도 있고, 범위를 제공 할 수도 있고, 명령 결과를 사용할 수도 있고, 와일드 카드를 사용할 수도 있습니다. 아래에서 하나씩 설명합니다.


1) 특정 값을 직접 제공

특정 값이 직접적으로 키워드의 후에 주어질 수 있으며, 다수의 값은 같은 공간에 의해 분리되는 1 2 3 4 5, "abc" "390" "tom"등등


위의 코드에서 값 목록으로 숫자 집합이 사용됩니다. 값 목록으로 문자열 집합을 사용하는 방법을 보여 드리겠습니다.

  1. #! / bin / bash
  2. for str in  "C 언어"  
  3. do
  4.     echo $ str
  5. done

운영 결과 :

C 언어


2) 값 범위 제공

값 범위를 제공하는 특정 형식은 다음과 같습니다.

  • {start..end}

시작은 시작 값을 의미하고 끝은 끝 값을 의미합니다. 중간에는 세 개의 점이 아니라 두 개의 점이 사용됩니다. 저자의 실제 측정에 따르면이 형식은 숫자와 문자 만 지원합니다.


예를 들어 1에서 100까지의 합계를 계산하려면 다음을 수행하십시오.

  1. #! / bin / bash
  2. sum = 0
  3. for n in { 1 .. 100 }
  4. do
  5.     (( sum + = n ))
  6. done
  7. echo $ sum

실행 결과 :

5050


예 를 들어 A에서 z까지의 모든 문자를 출력합니다.

  1. #! / bin / bash
  2. for C in {A .. Z}
  3. do
  4.     printf  "% c"  $ c
  5. done

출력 결과 :

ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _ ʻabcdefghijklmnopqrstuvwxyz

ASCII 코드 테이블에 따라 Shell이 ​​출력되는 것을 확인할 수 있습니다.


3) 명령 실행 결과 사용

백틱 ``또는 $()두 가지 모두를 사용하여 명령의 실행 결과를 얻을 수 있습니다. " 셸 변수 "섹션에서 자세히 설명하고 두 가지의 장단점을 비교했습니다. $()혼동을 일으키기 쉽지 않기 때문에이 섹션 에서이 양식을 사용 합니다.


예를 들어 1에서 100까지의 모든 짝수 합계를 계산하려면 다음을 수행하십시오.

  1. #! / bin / bash
  2. sum = 0
  3. for n in $ ( seq 2 2 100 )
  4. do
  5.     (( sum + = n ))
  6. done
  7. echo $ sum

연산 결과 :

2550


seq는 특정 범위의 정수를 생성하는 데 사용되는 Linux 명령어이며 스텝 크기를 설정할 수 있습니다. 이해하지 못하는 독자는 바이두를 직접 부탁드립니다. seq 2 2 1002에서 시작하여 매번 2 씩 증가하고 100에서 끝나는 것을 의미합니다.


다른 예를 들어, 현재 디렉토리에있는 모든 쉘 스크립트 파일을 나열하십시오.

  1. #! / bin / bash
  2. for filename in  $ ( ls *.sh )
  3. do
  4.     echo $ filename
  5. done

실행 결과 :

demo.sh

test.sh

abc.sh


ls는 현재 디렉토리의 모든 파일을 나열하는 데 사용되는 Linux 명령입니다. *.sh즉 , 일치하는 접미사가있는 파일 .sh, 즉 셸 스크립트 파일입니다.


4) Shell 와일드 카드 사용

쉘 와일드 카드는 일반적으로 텍스트가 아닌 디렉토리 나 파일을 일치시키는 데 사용되는 단순화 된 정규식으로 간주 할 수 있습니다. 이해하지 못하는 독자는 " Linux 쉘 와일드 카드 (글롭 패턴) " 를 클릭하십시오 .


쉘 와일드 카드를 사용하면 ls 명령을 사용하지 않고도 현재 디렉토리의 모든 스크립트 파일을 표시 할 수 있습니다. 다음 코드를 참조하십시오.

  1. #! / bin / bash
  2. for filename in *.sh
  3. do
  4.     echo $ filename
  5. done

작업 결과 :

demo.sh

test.sh

abc.sh


5) 특수 변수 사용

쉘에는 $ #, $ *, $ @, $ ?, $$ 등과 같은 많은 특수 변수가 있습니다. (모르는 독자는 " 쉘 특수 변수 " 를 클릭하십시오 .) value_list에서 사용할 수 있습니다.

  1. #! / bin / bash
  2. function func () {
  3.     for str in  $@
  4.     do
  5.         echo $ str
  6.     done
  7. }
  8. func C++ Java Python C#

연산 결과 :

C++

Java

Python

C#


사실 value_list도 생략 할 수 있으며 생략 후의 효과는 $@. 아래 데모를 참조하십시오.

  1. #! / bin / bash
  2. function func () {
  3.     for str
  4.     do
  5.         echo $ str
  6.     done
  7. }
  8. func C++ Java Python C#

실행 결과 :

C++

Java

Python

C#

반응형