개발/Bash 쉘스크립트

[Bash] 리눅스 쉘 스크립트: for 문 기본 사용 법 및 옵션 까지 모두 정리

일요일좋아하는사람 2025. 5. 4. 13:37
728x90
반응형

Bash 스크립트에서 반복 작업을 자동으로 처리할 수 있는 가장 기본적인 방법 중 하나는 for 반복문입니다. 다양한 목록을 순회하거나 특정 횟수만큼 반복 실행할 때 유용하며, 자동화된 작업에서 자주 사용됩니다. 이 글에서는 Bash에서 for 반복문이 어떤 역할을 하는지, 다양한 형태의 사용법과 옵션들을 자세히 소개하고 실제 예제도 함께 살펴보겠습니다.

Bash에서 for 반복문의 역할

for 반복문은 지정한 목록의 각 항목에 대해 동일한 작업을 반복적으로 수행하는 구조입니다. 배열, 문자열, 명령 결과, 숫자 범위 등 다양한 데이터를 반복 처리할 수 있습니다. 이는 수동으로 하나씩 처리하던 작업을 자동화하는 데 큰 도움이 됩니다.

for 반복문의 기본 사용법

기본 구조는 다음과 같습니다:

for 변수 in 항목1 항목2 항목3; do
  명령어들
done

예제:

for name in Alice Bob Charlie; do
  echo "Hello, $name!"
done

결과:

Hello, Alice!
Hello, Bob!
Hello, Charlie!

for 반복문 관련 사용법 및 옵션들

1. 리스트 반복

역할: 미리 정의된 값 목록을 순회합니다.
사용법:

for item in one two three; do
  echo $item
done

예제 및 결과:

one
two
three

2. 범위 반복 (Brace Expansion)

역할: 숫자 또는 문자 범위를 반복합니다.
사용법:

for i in {1..5}; do
  echo $i
done

결과:

1
2
3
4
5

증가 간격을 지정할 수도 있습니다:

for i in {1..10..2}; do
  echo $i
done

결과:

1
3
5
7
9

3. C 스타일 반복

역할: C 언어 스타일로 반복문 작성
사용법:

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

결과:

0
1
2
3
4

4. 배열 순회

역할: 배열 요소를 하나씩 순회
사용법:

arr=(apple banana cherry)
for fruit in "${arr[@]}"; do
  echo $fruit
done

결과:

apple
banana
cherry

5. 파일 목록 순회 (글로브 패턴)

역할: 디렉터리 내 파일들을 반복 처리
사용법:

for file in *.txt; do
  echo "텍스트 파일: $file"
done

결과: 현재 디렉터리의 모든 .txt 파일 이름을 출력합니다.

6. 명령어 결과 반복

역할: 명령어 실행 결과를 반복 처리
사용법:

for user in $(cut -d: -f1 /etc/passwd); do
  echo "사용자: $user"
done

결과: 시스템의 모든 사용자 이름을 출력합니다.

실제 사용 예제와 결과

예제 스크립트: 숫자 합 계산하기

#!/bin/bash

sum=0
for i in {1..100}; do
  sum=$((sum + i))
done

echo "1부터 100까지의 합: $sum"

결과:

1부터 100까지의 합: 5050

예제 스크립트: 파일 존재 여부 확인

#!/bin/bash

for file in config.txt data.csv report.pdf; do
  if [ -e "$file" ]; then
    echo "$file 이(가) 존재합니다."
  else
    echo "$file 이(가) 존재하지 않습니다."
  fi
done

결과 (파일 상황에 따라 다름):

config.txt 이(가) 존재합니다.
data.csv 이(가) 존재하지 않습니다.
report.pdf 이(가) 존재합니다.

Bash의 for 반복문은 간단한 반복 작업부터 복잡한 자동화 작업까지 광범위하게 활용됩니다. 위에서 소개한 다양한 옵션과 예제를 이해하고 활용하면 Bash 스크립트 작성 시 훨씬 강력한 기능을 구현할 수 있습니다.

728x90
반응형