Post

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.