hyperskill - Loops and sequences 영어 원문

프로그래밍에서 루프(Loops - 반복) 은 값의 집합에 대해,

같은 함수 혹은 메서드를 반복할 수 있게 해 주는 편리한 개념입니다.

이는 이는 상대적으로 수행하기 쉬우며, 반복적인 업무를 훌륭하게 도와줍니다.

Bash 에서의 루프는 심지어 더 도움이 됩니다.

당신이 정의한 값들의 집합은, bash 에서 리스트로 추정할 수 있는 모든것이 될 수 있습니다.

대부분의 값의 집합을, bash 에서 반복할 수 있다는 의미

bash 루프의 이러한 속성은 이들을 상대적으로 더 유연하고, 이해하기 쉽게 만듭니다.


For 루프는 가장 평범한 타입이므로, 이와 함께 시작 해 봅시다.


For loop - For 반복문


bash 에서 for 루프는 값들의 집합에 대해 명령어를 반복합니다.

구문은 이와 같습니다 :

for variable in set_of_values
do
    command
done

기본적으로 이러한 코드는 값들의 집합에 대해서, dodone 사이에서 명령어가 반복 될 것이라는 것을 의미합니다.

루프에서 몇 번의 숫자를 지정한 이 값들은 variable 에 담겨질 겁니다.

여기 터미널에서 이것이 어떻게 보이는지 예제가 있습니다 :

$ for i in 1 2 3 4 5 do
    echo $i
  done
1
2
3
4
5

이번 코드에서는, echo 명령어를 사용하여 우리가 입력한 숫자의 집합을 표시했습니다.

이 값들을 설정하기 위해서, 또한 영역(range) 를 사용 할 수 있습니다.

구문은 이와 같습니다 :

for i in {n..N}
do
    command
done

range를 사용 할 때, 당신의 값의 집합으로 시작(n) 과 끝(N) 을 정의하는 것만으로도 충분합니다.

기본적으로, 1단계씩 당신의 집합을 통해 반복합니다.

하지만, 당신은 step 파라미터를 조정할 수 있습니다 : 루프당 단계 파라미터 조정 가능

여기 터미널에, 1에서 5까지 2 단계씩 올라가는 영역의 예제가 있습니다 :

$ for i in {1..5..2} do 
    echo $i
  done
1
3
5

for 루프의 파라미터들은 심지어 더 유연해 질 수 있습니다.

이것이 숫자인지는 중요하지 않습니다 : 예를 들어, 당신은 문자열의 리스트를 반복 할 수 있습니다 :

$ for i in John Jack Mary 
  do 
      echo "Here is $i"
  done
Here is John
Here is Jack
Here is Mary

Using the seq command in a for loop

for 루프 내부의 seq 명령어 사용하기


어떠한 영역의 숫자들을 반복하기 위해서,

당신은 seq 명령어를 사용 할 수 있습니다.

이 명령어와 이러한 구문을 사용하여 순열을 생성 할 수 있습니다 :

seq [options] number

만약 seq 숫자가 하나의 숫자만 작성되었다면, 이러한 순열은

1 부터 시작하여, 주어진 숫자까지 1 단계씩 끝까지 올라갑니다 :

$ seq 4
1
2
3
4

seq 명령어는 또한 몇 개의 옵션들을 가지고 있습니다 :

-f 옵션

이 옵션은 특정ㅊ한 방식으로 출력 형식을 만들기 위해 사용됩니다.

당신은 형식을 설정하기 위해 형식 묘사 연산자들을 사용 할 수 있습니다.

기본적으로, 이는 %g 입니다.

형식(포맷) 옵션을 조정하기 위해서, 당신은 그저 형식 연산자를 사용하면 됩니다 : seq -f %f 5

%g 는 그냥 정수를 의미하는듯. %f 는 소수.

-w 옵션

이 옵션은 모든 숫자의 넓이를 동등하게 설정하는 데 사용되는데,

넓이를 동등하게 만들기 위해 0 을 집어넣습니다.

Example :

$ seq -w 10
01
02
03
04
05
06
07
08
09
10

-s 옵션

이 옵션은 특정 문자열로 숫자들을 분리하는 데 사용됩니다.

기본적으로 이 특정 문자열은 \n 으로 설정되어 있습니다.

만약 당신이 문자열로 " | " 을 사용한다면, 순열은 이와 같습니다 :

$ seq -s " | " 5
1 | 2 | 3 | 4 | 5

그리고 이와 같은 구문을 사용하여 seq 명령어로 수의 상승을 생성할 수 있는데 사용 할 수 있습니다.

seq [start] [increase] [stop]

여기서, start 는 순열의 첫 번째 숫자이며, stop 은 마지막 숫자, increase 는 상승할 단계입니다.

순열의 숫자들은 양수이거나 음수일 수 있으며, 따라서 순열은 양 쪽의 방향으로 갈 수 있습니다.


seq 명령어는 for 루프의 영역처럼 사용 할 수 있습니다.

이를 수행하기 위해서, 당신은 이러한 구문을 사용할 수 있습니다 :

for i in $(seq command)
do
    command
done

여기 1 에서 2 단계씩, 마지막인 5 로 가는 반복문의 예제가 있습니다 :

$ for i in $(seq 1 2 5); do 
    echo "Number: $i"
  done
Number: 1
Number: 3
Number: 5

While loop - While 반복문


while 반복문은 control command(제어 명령어) 가 true 상태를 반환 할 때 까지

실행되도록 만듭니다.

이러한 제어 명령어는 true or false 상태를 반환할 수 있는 모든 명령어입니다.

while 문의 가장 간단한 형태로, 이는 반복문을 실행하기 위한 조건이 될 수 있습니다.

반복문을 위한 조건은 괄호에 의해 분리됩니다.

조건 반복문에 대한 구문은 이와 비슷합니다 :

while [ condition ]
do
    command
done

만약 당신이 다른 명령어를 사용하거나, 함수를 호출한다면,

괄호를 사용 할 수 없습니다 :

while control-command
do
    command
done

여기 i 변수가 3 보다 작거나 같을 때 까지 실행하는 반복문의 예제가 있습니다 :

$ i=1
$ while [ $i -le 3 ] do
    echo "I is $i"
    i=$(($i+1))
  done
I is 1
I is 2
I is 3

또한 until 루프도 있습니다.

이는 while 문법의 반대이며,

이는 당신의 반복문에서 제어문이 true 상태를 반환 할 때 까지 실행됩니다.

(그동안 false 를 반환한다는 겁니다.)


만약 당신이 반복문에 대한 조건에서 true 를 사용한다면,

당신은 끊나지 않는 반복문을 실행 할 겁니다.

터미널에서, 이와 같이 보입니다 :

$ while true; do 
    echo "To stop execution of a loop, use CTRL+C"
  done

실제로, 당신은 영원히 반복하고 싶지는 않을 겁니다.

따라서, 이는 보기엔 쓸모없어보입니다.

하지만, 영원한 반복문들은 조건문으로 조작될 수 있습니다.


Conditional loop control - 조건 반복문 제어


반복문들은 if 문법 내부에서 breakcontinue 명령어들로 조건적으로 제어될 수 있습니다.

문법은 then 명령어를 포함하며, 이 명령어는 if 조건이 true 조건을 일 때 실행됩니다.

if 문법들은 위에서 말한 모든 세 가지 반복문들에서 사용 될 수 있습니다.

구문은 이와 같습니다 :

for i in set_of_values
do
    if [ condition ]
    then
        break # or continue
    fi 
    command
done

break 명령어는 이미 시작된 반복문으로부터 즉시 탈출 할 수 있게 해 줍니다.

여기 5 개의 숫자를 담은 반복문의 예제가 있습니다.

이는 4 번째 숫자에서 탈출합니다 :

$ for i in $(seq 1 5); do 
    if [ $i -eq 4 ]; then
      break;
    fi
    echo "Number: $i"
  done
Number: 1
Number: 2
Number: 3

continue 명령어는 반복문에서 탈출하지 않고, 어떠한 반복 상황에서 건너 뛸 수 있게 해 줍니다.

여기 1 에서 10 까지 반복하는데,

5 보다 크고, 10 보다 작을때 넘깁니다 :

$ for i in $(seq 1 10); do
    if [ $i -gt 5 ] && [ $i -lt 10 ]; then
        continue;
    fi;
     echo "Number: $i"
  done
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5
Number: 10

Conclusion - 결론


Bash 반복문들은 서로 다른 방식으로 반복적인 업무를 실행하는 데 사용될 수 있습니다.

반복문과 연결된 많은 옵션들은 유용한 도구이며, 간단한 코딩 업무들에 대해 간편하게 다가올 겁니다.



words to remember


relatively : 비교적, 상대적으로

extrapolate : 추정하다