3. OS이야기/03. Shell Script

[UNIX/LINUX] Shell Script 기본 - 3.for문 (1) 기본 사용법

알 수 없는 사용자 2014. 4. 28. 16:38

3. for문

 

(1) 기본 사용법 


for 단일변수 in 리스트; do    // for문 시작

    ~

done                                  // for문 종료



for문의 용도에 대한 것을 모르시는 분은 없을 겁니다.

 

C, Java 등 많은 language들에서 while문과 함께 가장 많이 쓰이는 루프 처리 구문이 바로 이 for문이기 때문이죠.

 

위 구문에서도 if문 처리에서 보았던 것처럼 세미콜론을 볼 수가 있는데, 마찬가지로 세미콜론을 사용하지 않으려면 다음과 같은 형태로 처리해야 합니다.


for 단일변수 in 리스트      // for문 시작

do

    ~

done                             // for문 종료



'리스트' 자리에는 보통 배열 형태로 들어가게 되는데요.

 

'리스트' 자리의 배열은 일일이 값을 나열할 수도 있고 배열 형태의 값을 가진 파일을 읽어들이는 형태일 수도 있습니다.

 

우선 '리스트'에 일일이 값을 나열하는 방법을 이용한 for문의 예시를 보도록 하겠습니다.


for day in Sun Mon Tue Wen Thu Fri Sat; do

    echo $day

done



위 예제는 '리스트' 자리에 요일 이름을 나열하여 'Sun'부터 'Sat'까지 하나씩 'day'라는 변수에 input값으로 들어가고 echo를 통해 화면에 뿌려지는 예제입니다.

 

그럼 이번에는 '리스트'에 배열 형태의 값을 가진 파일을 읽어들이는 방법을 살펴볼까요?

 

먼저 다음과 같은 값을 가진 파일이 있다고 가정합니다.


# cat test.txt

Sun Mon Tue Wen Thu Fri Sat



그리고 위 파일을 '리스트' 부분에 넣어보겠습니다.


for day in $(cat test.txt); do

    echo $day

done



위 예제는 test.txt 파일의 값을 읽어들여 'day' 변수에 하나씩 input값으로 들어가게끔 하는 것인데요.

 

위 예제처럼 '리스트' 부분에 cat 커맨드를 사용하여 바로 파일을 읽어들일 수도 있고 또는 다음과 같이 사용할 수도 있습니다.


array=`cat test.txt`

 

for day in $array; do

    echo $day

done



`(back quotation)은 어떤 shell command의 실행 결과를 '=(equal)' 좌측의 변수에 할당하고자 할 때 사용합니다.

 

위와 같이 처리하면 앞서 '리스트' 부분에서 바로 cat 커맨드를 사용한 것과 동일한 결과를 가져올 수 있습니다.

 

이상 for문에 대한 기본 사용법 및 간단한 예제들을 살펴보았습니다.