개발 환경 및 프로젝트 관리/Linux 개념

Bash — Associative Array (연관 배열)

Data Jun 2025. 10. 9. 15:39

Bash에서는 일반적인 숫자 인덱스 배열 외에도
문자열(Key)-값(Value) 쌍으로 데이터를 저장하는 연관 배열(Associative Array) 을 지원합니다.
즉, Python의 딕셔너리(Dictionary) 와 비슷한 개념입니다.

 

선언 및 초기화

# 연관 배열 선언
declare -A array_variable

# 선언과 동시에 초기화
array_variable=([abc]=hello [xyz]=world)

⚠️ Associative Array는 반드시 declare -A로 선언 후 사용해야 합니다.
선언 없이 바로 대입하면 일반 배열로 인식되어 오류가 발생할 수 있습니다.

 

값 추가

array_variable+=([new]=hahaha)

 

  • [key]=value 형태로 데이터를 추가합니다.
  • 이미 존재하는 키에 값을 다시 대입하면 해당 값이 덮어쓰기 됩니다.

값 삭제

unset array_variable[xyz]

 

 

  • 지정한 키(xyz)에 해당하는 요소를 삭제합니다.
  • 키만 삭제되며, 다른 요소에는 영향을 주지 않습니다.

 

전체 키와 값 확인

# 모든 키 목록
echo ${!array_variable[@]}

# 모든 값 목록
echo ${array_variable[@]}

 

예시:

array_variable=([a]=apple [b]=banana [c]=cherry)
echo ${!array_variable[@]}   # 출력: a b c
echo ${array_variable[@]}    # 출력: apple banana cherry

 

특정 요소 접근

echo ${array_variable[abc]}   # 특정 key의 값 출력

 

요소 개수 확인

echo ${#array_variable[@]}   # 요소 개수 출력

 

반복문과 순서 주의

연관 배열을 for 반복문으로 순회할 수 있습니다.

for key in "${!array_variable[@]}"; do
    echo "$key => ${array_variable[$key]}"
done

주의: Associative Array는 순서를 보장하지 않습니다.
즉, 키의 출력 순서는 매번 달라질 수 있습니다.
순서가 중요한 경우에는 일반 배열(Indexed Array) 를 사용하는 것이 좋습니다.

 

예제 전체 코드

#!/bin/bash

# 연관 배열 선언
declare -A fruits

# 값 추가
fruits=([a]=apple [b]=banana [c]=cherry)

# 새 요소 추가
fruits+=([d]=dragonfruit)

# 특정 값 출력
echo "b: ${fruits[b]}"

# 모든 키와 값 출력
for key in "${!fruits[@]}"; do
    echo "$key => ${fruits[$key]}"
done

# 요소 개수 출력
echo "총 ${#fruits[@]}개의 과일이 있습니다."

 

 

정리하면

명령어 설명
declare -A array  연관 배열 선언
array=([key]=value...) 초기화
array+=([key]=value) 요소 추가
unset array[key] 요소 삭제
${!array[@]} 모든 key 출력
${array[@]} 모든 value 출력
${#array[@]} 요소 개수 출력

Bash의 Associative Array는
데이터를 이름(key)으로 관리할 수 있어 가독성과 유지보수가 향상됩니다.
다만, 반드시 declare -A로 선언해야 하며,
반복문에서 순서가 일정하지 않다는 점은 꼭 기억해두세요.