다른 스크립팅 언어와 마찬가지로 Bash 역시 반복문(루프)을 지원합니다.
반복문은 동일한 작업을 여러 번 수행해야 할 때 매우 유용합니다. Bash 스크립트에서는 for 루프와 while 루프를 활용할 수 있으며, 이 글에서는 두 반복문의 기본 문법과 다양한 예제를 통해 사용 방법을 자세히 살펴보겠습니다.
Bash for 루프
Bash에서 for 루프의 기본 문법은 다음과 같습니다.
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// for 루프의 실행 범위
done
for 루프는 나열된 각 파라미터에 대해 한 번씩 실행됩니다. 파라미터는 숫자, 숫자 범위, 문자열 등 다양한 형태가 될 수 있습니다.
Bash for 루프 기본 예제
다음은 for 루프를 사용하여 1부터 5까지의 숫자를 출력하는 간단한 예제입니다.
#!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
done
실행 결과:
1
2
3
4
5
숫자 범위 출력하기
일일이 값을 나열하는 대신 중괄호 확장({시작..끝})을 이용해 숫자 범위를 지정하여 반복할 수도 있습니다.
예를 들면 다음과 같습니다.
for i in {1..5}
do
echo "$i"
done
실행 결과:
1
2
3
4
5
문자열 목록 반복하기
for 루프는 문자열 파라미터를 순회하는 데에도 활용할 수 있습니다.
#!/bin/bash
for day in MON TUE WED THU FRI SAT SUN
do
echo "$day"
done
실행 결과:
MON
TUE
WED
THU
FRI
SAT
SUN
C 스타일 for 루프
C 언어와 유사한 문법으로 for 루프를 작성할 수도 있습니다. 초기화, 조건식, 증감식을 한 줄에 함께 표현하기 때문에 반복 횟수를 명확하게 제어하고 싶을 때 유용합니다.
예를 들면 다음과 같습니다.
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
실행 결과:
1
2
3
4
5
현재 디렉터리의 파일 목록 출력하기
Bash for 루프를 활용하면 현재 디렉터리에 있는 모든 파일 목록을 손쉽게 확인할 수 있습니다.
#!/bin/bash
for fname in ./*
do
ls -l $fname
done
위 예제에서 ./*는 현재 디렉터리의 모든 파일과 디렉터리를 의미하며, 각 항목마다 ls -l 명령이 실행되어 상세 정보가 출력됩니다.
Bash while 루프
Bash는 while 루프도 지원합니다. while 루프는 주어진 조건이 참(true)인 동안 일련의 명령어를 계속해서 실행합니다.
Bash while 루프의 기본 문법은 다음과 같습니다.
while [조건]
do
// 실행할 명령어
done
조건식은 명령어가 실행되기 전에 먼저 평가됩니다. 따라서 루프 내부에 조건을 변경하는 코드가 반드시 포함되어야 하며, 그렇지 않으면 조건이 항상 참으로 남아 무한 루프에 빠질 수 있습니다.
Bash while 루프 기본 예제
다음은 1부터 5까지의 숫자를 출력하는 간단한 while 루프 예제입니다. 변수 값이 5보다 커지면 루프가 종료됩니다.
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
여기서 -le는 '작거나 같음(less than or equal)'을 의미하는 비교 연산자이며, let num++ 구문이 변수 값을 증가시켜 루프가 정상적으로 종료되도록 만듭니다.
C 스타일 while 루프
for 루프와 마찬가지로 while 루프 역시 C 스타일 문법으로 작성할 수 있습니다.
예를 들면 다음과 같습니다.
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done
이중 괄호 (( )) 안에서는 산술 연산과 비교 연산을 더 직관적인 형태로 표현할 수 있어 가독성이 좋아집니다.