hyperskill - Loops and sequences 영어 원문
프로그래밍에서 루프(Loops - 반복) 은 값의 집합에 대해,
같은 함수 혹은 메서드를 반복할 수 있게 해 주는 편리한 개념입니다.
이는 이는 상대적으로 수행하기 쉬우며, 반복적인 업무를 훌륭하게 도와줍니다.
Bash 에서의 루프는 심지어 더 도움이 됩니다.
당신이 정의한 값들의 집합은, bash 에서 리스트로 추정할 수 있는 모든것이 될 수 있습니다.
대부분의 값의 집합을, bash 에서 반복할 수 있다는 의미
bash 루프의 이러한 속성은 이들을 상대적으로 더 유연하고, 이해하기 쉽게 만듭니다.
For 루프는 가장 평범한 타입이므로, 이와 함께 시작 해 봅시다.
For loop - For 반복문
bash 에서 for
루프는 값들의 집합에 대해 명령어를 반복합니다.
구문은 이와 같습니다 :
for variable in set_of_values
do
command
done
기본적으로 이러한 코드는 값들의 집합에 대해서, do
와 done
사이에서 명령어가 반복 될 것이라는 것을 의미합니다.
루프에서 몇 번의 숫자를 지정한 이 값들은 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
문법 내부에서 break
와 continue
명령어들로 조건적으로 제어될 수 있습니다.
문법은 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 : 추정하다
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Containers - 컨테이너 기초 의미 (0) | 2024.08.23 |
---|---|
Globbing - 글로빙 (0) | 2024.08.21 |
Conditional statements and test checks - bash if-else 조건문 (0) | 2024.08.17 |
Archiving and extracting data - 데이터 보관 및 추출 (0) | 2024.08.15 |
MongoDB vs Relational databases - NoSQL vs RDBMS 비교 (0) | 2024.08.15 |