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
'IT > Linux' 카테고리의 다른 글
qemu-kvm과 XRDP를 같이 쓸 때 불편한 점 (0) | 2018.07.16 |
---|---|
우분투(Ubuntu) 기본 터미널에서 화면 나누기 (2) | 2018.03.17 |
리눅스에서 FreeRDP(xfreerdp)로 윈도우10 (2018년 1월 이후) 로그인이 안될 때 (0) | 2018.03.15 |
우분투(Ubuntu) 16.04 화면이 멈추고 마우스만 움직일 때 (0) | 2018.02.19 |
쉘(shell) 스크립트에서 다른 쉘 스크립트로 변수 넘기기 (0) | 2018.02.06 |