[bash] 리눅스 쉘 스크립트에서 for문 사용법 및 예제
리눅스 bash 쉘 스크립트에서 for문을 사용하는 방법에 대해서 알아보자.
어느 프로그래밍 언어든 조건문과 반복문은 자주 쓰기 때문에 잘 익혀두면 많이 편하다.
(이러면서 저는 매일 까먹고 포스팅 찾아봄...)
아래 for 문 설명에서는 seq에 대한 설명은 제외했습니다!
for 반복문 사용 방법
1
2
3
4
|
for 변수 in 범위
do
# 명령
done
|
cs |
반복문의 기본 구조는 위와 같다. for의 in 뒤에 범위에는 리스트나 배열 등이 올 수 있다.
반복할 명령문은 do - done 사이에 위치해 있다.
그럼 하나하나 예제를 보면서 사용 방법을 숙지해보자!
for 반복문 사용 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/bash
for var in A B C D E
do
echo $var
done
# 출력
A
B
C
D
E
|
cs |
in 뒤에 A B C D E 문자를 띄어쓰기로 구분하여 넣어주면 띄어쓰기를 구분하여 반복문을 수행한다.
즉 A 부터 E 까지의 반복을 수행하므로 A부터 E까지의 문자가 출력된 것을 볼 수 있다.
for 반복문 사용 예제-리스트 원소 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/bin/bash
list="A B C D E F G"
for var in $list
do
echo $var
done
# 출력
A
B
C
D
E
F
G
|
cs |
위 예제는 리스트의 원소를 순차적으로 반복문을 돌면서 출력한 예제이다.
for 반복문 사용 예제-배열 원소 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bash
array=(1 3 5 7 9)
for var in "${array[@]}"
do
echo $var
done
# 출력
1
3
5
7
9
|
cs |
배열의 원소도 출력할 수 있다.
array[@]를 통해 array 배열의 모든 원소를 in 뒤로 가져온다.
for 반복문 사용 예제 - 순차적으로 증가하면서 반복
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash
for var in {1..100}
do
echo $var
done
# 출력
1
2
3
4
...
(중략)
...
100
|
cs |
{시작..끝}
in 뒤에 중괄호로 특정 범위를 순차적으로 증가하면서 반복문을 수행하게 할 수 있다.
위 예제에서 볼 수 있듯이 시작과 끝 사이에 점 두개(..)를 넣어주면 시작과 끝까지 루프를 돌게 된다.
for 반복문 사용 예제 - 순차적으로 일정 범위만큼 증가 또는 감소하면서 반복
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash
for var in {1..100..5}
do
echo $var
done
# 출력
1
6
11
16
...
(중략)
...
96
|
cs |
{시작..끝..증감폭}
시작과 끝 뒤에 ..증감폭 을 넣어주면 1부터 100까지 해당 숫자만큼의 범위만큼 증가 한다.
위 예제에서는 1부터 5씩 증가하는 예제이므로 1, 6, 11 이렇게 5씩 증가하여 반복문을 수행한다.
마찬가지로 반대로 감소하는 감소폭을 넣어줄수도 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/bin/bash
for var in {100..1..-5}
do
echo $var
done
# 출력
100
95
90
...
(중략)
...
5
|
cs |
위 예제는 100부터 1까지 5씩 감소하면서 반복문을 수행하는 예제다.
for 반복문 사용 예제 - 이중 괄호
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bash
for ((var=0 ; var < 5 ; var++));
do
echo $var
done
# 출력
0
1
2
3
4
|
cs |
이중 괄호 안에 C나 JAVA와 같이 익숙한 형태의 반복문 문법을 사용할 수 있다.
위 예제는 0부터 5보다 작은 값까지 1씩 증가하면서 루프를 수행한다라는 문법이다.
for 반복문 사용 예제 - 무한 루프
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/bash
for (( ; ; ));
do
echo "Hello World"
done
# 출력
Hello World
Hello World
...
...
|
cs |
위와 같이 이중 괄호를 활용한 무한 루프를 만들 수도 있다.