Bash 스크립트를 작성할 때 for 루프는 여러 파일, 레코드 또는 다른 값들에 대해 동일한 작업을 반복 수행할 수 있게 해주는 매우 유용한 도구입니다.
for 문은 값 목록을 순회하면서 각 항목에 대해 작업을 수행하고, 모든 항목이 처리될 때까지 이 과정을 반복합니다.
대표적인 활용 사례로는 디렉터리 내 파일 순회, 텍스트 파일의 줄 단위 처리, 데이터베이스 쿼리 결과 처리 등이 있습니다.
Bash for 루프 기본 문법
for VARIABLE in LIST
do
COMMANDS
done
각 요소의 의미는 다음과 같습니다.
- VARIABLE: LIST의 각 항목이 COMMANDS에서 처리될 때 해당 항목이 할당되는 변수 이름입니다.
- LIST: 다양한 형태를 가질 수 있으며, 자세한 내용은 아래 예제를 참고하세요.
Bash for 루프 예제
for 루프는 미리 정의된 목록뿐만 아니라 다른 스크립트나 명령줄 애플리케이션의 출력 결과로 생성된 목록도 순회할 수 있습니다.
for 루프로 숫자 범위 순회하기
{START..END} 구문을 사용하면 범위 내의 각 숫자를 1씩 증가시키며 처리할 수 있습니다.
for num in {0..10}
do
echo "I'm counting to 10 and I'm up to $num"
done
참고 사항입니다.
- 목록의 각 항목은 변수 num에 할당됩니다.
- 이후 스크립트에서 $num 형태로 접근할 수 있습니다.
- 숫자 범위 순회는 Bash 버전 3.0 이상에서만 지원됩니다.
- 중괄호 안의 시작 숫자부터 끝 숫자까지 1씩 증가하며 순회합니다.
{START..END..INCREMENT} 구문을 사용하면 증분(step)을 지정할 수 있습니다. 아래 예제는 3씩 증가시켜 3의 배수만 처리합니다.
for num in {0..15..3}
do
echo "$num is a multiple of 3!"
done
참고 사항입니다.
- 중괄호 안의 표현식에 세 번째 숫자(증분)가 추가됩니다.
- 0부터 15까지의 숫자를 3씩 증가시키며 처리합니다.
- 사용자 지정 증분을 사용한 범위 순회는 Bash 버전 4.0 이상에서만 지원됩니다.
for 루프로 문자열 목록 순회하기
문자열 값으로 이루어진 목록도 순회할 수 있습니다.
for car in Ford Holden Honda BMW Ferrari
do
echo "I wish I could drive a $car"
done
for 루프로 배열 순회하기
배열을 변수로 선언한 후, 그 안의 값들을 순회할 수 있습니다.
FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry')
for fruit in "${FRUITS[@]}"
do
echo "$fruit is delicious"
done
for 루프로 파일 및 명령어 출력 결과 순회하기
다른 명령줄 명령의 출력 결과도 루프로 처리할 수 있습니다.
for f in *
do
echo "Filename is $f"
done
break – 루프 중단하기
break 문은 지정한 지점에서 루프를 즉시 종료합니다.
for num in {0..15..3}
do
echo "$num is a multiple of 3!"
if [[ "$num" == '9' ]]
then
break
fi
done
echo 'Finished counting at 9!'
continue – 현재 반복 건너뛰기
continue 문은 현재 반복에서 코드 실행을 중단하고 해당 반복을 건너뛴 뒤, 다음 반복으로 넘어갑니다.
for num in {0..15..3}
do
if [[ "$num" == '6' ]]
then
continue
fi
echo "$num is a multiple of 3!"
done
echo 'The number 6 was skipped!'
마무리
스크립트 작성 시 루프를 활용하면 시간을 크게 절약할 수 있으며, 수작업 없이 파일과 데이터 처리를 자동화하는 유연한 스크립트를 작성할 수 있습니다.
더 많은 Bash 스크립팅 팁이 궁금하다면 저희의 다른 글들도 확인해 보세요!