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로 선언해야 하며,
반복문에서 순서가 일정하지 않다는 점은 꼭 기억해두세요.
'개발 환경 및 프로젝트 관리 > Linux 개념' 카테고리의 다른 글
| Brace Expansion (중괄호 확장) (0) | 2025.10.09 |
|---|---|
| Bash에서의 Quoting — 따옴표 정리 (0) | 2025.10.09 |
| Bash — Indexed Array 기본 정리 (0) | 2025.10.09 |
| Bash의 Special Parameters 정리 (0) | 2025.10.09 |
| Bash에서의 Positional Parameters (위치 매개변수) (0) | 2025.10.09 |