Post

Bash에서 배열(Array)과 연관 배열(Associative Array) 반복문 사용법

Bash에서 배열(Array)과 연관 배열(Associative Array) 반복문 사용법

Bash에서 배열(Array)과 연관 배열(Associative Array) 반복문 사용법

Bash에서는 일반 배열(indexed array)과 연관 배열(associative array)을 지원합니다. 이 글에서는 두 종류의 배열을 for 루프를 통해 순회하는 방법을 예제와 함께 자세히 소개합니다.

1. 일반 배열 (Indexed Array)

배열 선언 및 초기화

1
fruits=("apple" "banana" "cherry")

예제 1: 인덱스 없이 값 순회

1
2
3
for fruit in "${fruits[@]}"; do
  echo "I like $fruit"
done

출력:

1
2
3
I like apple  
I like banana  
I like cherry

예제 2: 인덱스와 값 모두 출력

1
2
3
for i in "${!fruits[@]}"; do
  echo "Index $i: ${fruits[$i]}"
done

출력:

1
2
3
Index 0: apple  
Index 1: banana  
Index 2: cherry

"${!array[@]}" 문법은 배열의 인덱스를 반환합니다.


2. 연관 배열 (Associative Array)

Bash 4.0 이상에서 사용 가능하므로, 버전을 확인하세요.

1
bash --version

배열 선언 및 초기화

1
2
3
4
5
6
declare -A capitals
capitals=(
  [Korea]="Seoul"
  [Japan]="Tokyo"
  [France]="Paris"
)

예제 1: 키-값 순회

1
2
3
for country in "${!capitals[@]}"; do
  echo "The capital of $country is ${capitals[$country]}"
done

출력:

1
2
3
The capital of Korea is Seoul  
The capital of Japan is Tokyo  
The capital of France is Paris

예제 2: 값만 순회

1
2
3
for city in "${capitals[@]}"; do
  echo "Capital city: $city"
done

3. 배열 순회 시 주의사항

  • 항상 "${array[@]}" 또는 "${!array[@]}" 와 같이 쌍따옴표로 감싸야 공백이 포함된 값도 올바르게 처리됩니다.
  • associative array는 declare -A로 반드시 선언해주어야 합니다.
  • associative array는 숫자뿐 아니라 문자열 키도 허용됩니다.

4. 응용 예제: 사용자 목록과 직급 출력

1
2
3
4
5
6
7
8
9
10
declare -A users
users=(
  [alice]="Manager"
  [bob]="Developer"
  [carol]="Designer"
)

for name in "${!users[@]}"; do
  echo "$name is a ${users[$name]}"
done

출력:

1
2
3
alice is a Manager  
bob is a Developer  
carol is a Designer

마무리

Bash에서 배열을 사용하는 것은 스크립트의 유연성과 가독성을 높이는 데 매우 유용합니다. 특히, 연관 배열은 데이터를 키-값 쌍으로 다룰 수 있어 복잡한 데이터 구조를 단순하게 처리할 수 있습니다. for 루프와 함께 활용하면 반복 작업을 효율적으로 처리할 수 있습니다.

1
# bash version >= 4.0 인지 확인하는 것도 잊지 마세요!
This post is licensed under CC BY 4.0 by the author.