리눅스 커맨드라인 완벽입문 - 33.for

흐름 제어 : for 루프

  • for 루프는 반복 중에 작업 순서를 제공한다는 점에서 while과 until루프와 차이가 있다.
  • for 루프는 for 명령어로 구현된다.
  • 최신 bash 버전은 두 가지 형식의 for 문을 제공한다.

for : 전통적인 쉘 형식

for 명령어의 원 문법은 다음과 같다.

for variable [in words]; do
				commands
done

**vriable**은 루프 수행 중에 증가되는 변수명이고, words는 선택적인 variable에 순차적으로 할당되는 항목 목록이다. 그리고 commands는 반복마다 실행되는 명령들이다.

위 코드는 커맨드 라인에서 아래와 같은 방식으로 동작한다.

$ for i in A B C D; do echo $i; done
A
B
C
D

이 예제에서 for 명령어에 네 개의 단어 목록(A, B, C, D)이 주어진다. 네 단어 목록으로 루프는 네 번 실행된다. 각 루프가 실행될 때 마다 단어가 변수 i에 할당된다. 루프 내에서 echo 명령어로 할당 내용을 보기 위해 i 값을 표시한다. while과 until 루프처럼 done 키워드로 루프를 닫는다.

for : C 언어 형식

bash의 최신 버전에는 C 언어에서 사용하는 형식과 닮은 for 명령 문법의 두 번째 형식이 추가되었다.

for (( expression1; expression2; expression3 )); do
							commands
done

expression1, expression2, expression3는 모두 산술식이고, commands는 루프의 각 반복마다 실행되는 명령들이다.

이 형식은 동작 측면에서 다음 구조와 동일하다.

(( expressin1 ))
while (( expression2 )); do
				 commands
					(( expression3 ))
done

expression1는 루프를 위한 초기 상태이고, expression2는 루프가 끝나는 시점을 결정하는 데 사용된다. 그리고 expression3는 루프의 각 반복 끝 부분에서 실행된다.

아래는 그 전형적인 예제이다.

#!/bin/bash

# simple_counter : demo of C style for command

for (( 1=0; i<5; i=i+1 )); do
				echo $i
done

실행 결과는 아래와 같다.

[me@linuxbox ~]$ simple_counter
0
1
2
3
4
서브목차