반응형

OS: Ubuntu 16.04

Shell: bash



배쉬(bash) 쉘에서 반복문, 즉 루프(loop)를 돌릴 때 여러가지 방법을 사용할 수 있다.



1. seq 사용


가장 간단한 방법이다. seq라는 프로세스가 순서대로 숫자를 출력해 주는 역할을 하는데, 그 결과를 문자열로 받아서 루프로 사용한다.


skylit@Linux:~$ seq 1 10
1
2
3
4
5
6
7
8
9
10


배쉬 쉘에서 seq를 바로 실행하면 위와 같이 나오고, 이것을 문자열로 사용해서 루프를 돌린다.


#!/bin/bash


SET=$(seq 0 9)

for i in $SET

do

    echo "Running loop seq "$i

    # some instructions

done


실행 결과:

Running loop seq 0
Running loop seq 1
Running loop seq 2
Running loop seq 3
Running loop seq 4
Running loop seq 5
Running loop seq 6
Running loop seq 7
Running loop seq 8
Running loop seq 9




2. 공백으로 구분된 문자열 사용


위의 seq를 그냥 수동으로 입력하는 방법이다. seq 쓰는 것과 아무 차이가 없고, 대신 사용자가 원하는 순서대로 숫자의 나열을 바꾸거나 뺄 수 있다.

루프 돌리는 수가 적고, 특정한 번호 순서를 직접 명시하고 싶을 때 유용하다.

#!/bin/bash


ORDER="5 6 7 8 9 4 3 2 1 0"

for i in $ORDER

do

    echo "Running loop "$i

    # some instructions

done


실행 결과:

Running loop 5
Running loop 6
Running loop 7
Running loop 8
Running loop 9
Running loop 4
Running loop 3
Running loop 2
Running loop 1
Running loop 0


물론 숫자 말고 다른 문자열도 가능하다.


#!/bin/bash


ORDER="apple orange watermelon"

for i in $ORDER

do

    echo $i

    # some instructions

done


실행 결과:

apple
orange
watermelon




3. bash의 루프 문법 사용


C/C++과 가장 유사한 형태라서 편하게 쓸 수 있다.

그리고 앞서 소개한 두 방법은 메모리에 문자열 변수를 할당하고 있어야 하는데 루프의 수가 매우 커지면 문자열의 길이도 그만큼 길어지기 때문에, 혹시나 너무 큰 루프 숫자로 인해 발생하는 메모리 문제를 방지하고 싶다면 이 방법이 유리하다.


#!/bin/bash


for ((i=0;i<=9;i++))

do

    echo "Running loop "$i

    # some instructions

done


실행 결과:

Running loop 0
Running loop 1
Running loop 2
Running loop 3
Running loop 4
Running loop 5
Running loop 6
Running loop 7
Running loop 8
Running loop 9







반응형
블로그 이미지

Bryan_

,