Linux for
1. 문법
for
문의 기본 문법은 다음과 같다. 주어진 배열에 데이터가 있는 동안 순차적으로 반복된다. 반복중에 if
문과 continue
, break
문을 이용하여 while
문의 처음으로 돌아가거나, 탈출하는 것이 가능하다.
1
2
3
4
5
for [ 배열_아이템 ] in [ 배열 ]
do
명령1
${배열_아이템}
done
2. 사용예제
1) 숫자 데이터를 이용한 반복
연속된 숫자를 반복하는 방법은 다음과 같다. 1에서 100 까지의 숫자를 반복하는 예제이다.
1
2
3
4
5
6
#!/bin/bash
for vTime in {1..100}
do
echo ${vTime}
done
2) 포멧에 맞는 숫자 반복
포맷에 맞게 숫자를 반복할 수도 있다. 00에서 23까지의 형식으로 숫자를 반복하는 방법은 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
# 방법 1
for vTime in {00..23}
do
echo ${vTime}
done
# 방법 2
for vTime in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
do
echo $vTime
done
3) 배열 데이터를 이용한 반복
배열을 이용한 반복은 다음과 같다.
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
vArray=(A
B
C)
for vItem in "${vArray[@]}"
do
echo $vItem
done
배열을 이용할 때는 아래와 같은 방법으로도 처리할 수 있다.
1
2
3
4
5
6
7
8
#!/bin/bash
vArray=(A B C)
for vItem in "${vArray[@]}"
do
echo $vItem
done
4) 문자열을 분할하여 반복
입력된 문자열을 분할하여 반복하는 방법도 있다. 배쉬쉘에 문자열을 분리할 때 기준이 되는 IFS
변수를 이용하여 처리한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
vStrs="John 1 C
David 2 B
Wick 3 A"
IFS=$'\n' # 라인단위로 분리
vArray=($vStrs)
IFS=$' ' # 공백을 기준으로 분리
for vItem in "${vArray[@]}"
do
echo "------"
arr=($vItem)
echo "name=${arr[0]}"
echo "rank=${arr[1]}"
echo "type=${arr[2]}"
done
실행결과는 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
$ ./for.sh
------
name=John
rank=1
type=C
------
name=David
rank=2
type=B
------
name=Wick
rank=3
type=A
[출처 및 참고]
This post is licensed under CC BY 4.0 by the author.