FOR 루프 & WHILE 문

Bash 스크립팅 입문

Alex Scriven

Data Scientist

기본 FOR 루프 구조

Python:

for x in range(3):
    print(x)
0
1
2

R:

for (x in seq(3)){
    print(x)
}
[1] 1
[1] 2
[1] 3
Bash 스크립팅 입문

Bash의 FOR 루프

Bash의 기본 구조도 유사합니다:

for x in 1 2 3

do echo $x done
1
2
3
Bash 스크립팅 입문

FOR 루프 숫자 범위

Bash에는 '브레이스 확장'이라는 숫자 범위 작성 방법이 있습니다:

  • {START..STOP..INCREMENT}
for x in {1..5..2}

do echo $x done
1
3
5
Bash 스크립팅 입문

FOR 루프 세 표현식 문법

또 다른 자주 쓰는 FOR 문 형태는 '세 표현식' 문법입니다.

  • 세 표현식을 이중 괄호로 감쌉니다
  • 첫 부분: 시작식 (x=2)
  • 중간: 종료 조건 (x<=4)
  • 마지막: 증가/감소식 (x+=2)

 

 

for ((x=2;x<=4;x+=2))
do 
    echo $x
done
2
4
Bash 스크립팅 입문

글롭 확장(Glob expansions)

Bash에서는 *로 패턴 매칭을 사용해 디렉터리의 파일 등을 for 루프에 확장할 수 있습니다.

예를 들어, /books 폴더에 텍스트 문서가 두 개 있다고 가정합시다:

for book in books/*
do  
    echo $book
done
books/book1.txt
books/book2.txt
Bash 스크립팅 입문

셸 안의 셸 다시 보기

$() 표기로 셸 안의 셸을 만든 것 기억하시나요?

이를 for 루프에 바로 사용할 수 있습니다!

다음과 같은 폴더 구조를 가정합시다:

books 디렉터리 구조

Bash 스크립팅 입문

셸 안의 셸 → FOR 루프

셸 안의 셸 호출 결과를 순회할 수 있습니다:

for book in $(ls books/ | grep -i 'air')

do echo $book done
AirportBook.txt
FairMarketBook.txt
Bash 스크립팅 입문

WHILE 문 문법

FOR 루프와 유사하지만, 각 반복마다 검사되는 조건을 설정합니다.

조건이 거짓이 될 때까지 반복합니다.

  • for 대신 while을 사용
  • 조건은 대괄호로 감쌉니다
    • IF 문과 동일한 수치 비교 플래그 사용(-le 등)
  • 여러 조건은 &&(AND), ||(OR)로 연결하거나 이중 대괄호 사용 가능
  • 종료를 유발하는 변경이 코드 안에 있어야 함(없으면 무한 루프 위험)
Bash 스크립팅 입문

WHILE 문 예시

간단한 예시입니다:

x=1

while [ $x -le 3 ];
do echo $x ((x+=1)) done
1
2
3
Bash 스크립팅 입문

무한 루프 주의

종료 조건을 충족하지 않으면 WHILE 문은 무한 루프가 될 수 있습니다.

x=1
while [ $x -le 3 ]; 
do
    echo $x
    # x를 증가시키지 않음. 3에 도달하지 않음!
    # ((x+=1)) 
done

이 코드는 1을 계속 출력합니다!

Bash 스크립팅 입문

Vamos praticar!

Bash 스크립팅 입문

Preparing Video For Download...