bash 배열은 「숫자 인덱스 배열」(indexed)과 「키-값 배열」(associative) 두 종류.
다른 언어에 비해 약간 어색하지만 알면 매우 유용.
indexed 배열.
arr=("apple" "banana" "cherry").
echo ${arr[0]} — apple.
${arr[@]} — 전체.
${#arr[@]} — 길이.
arr[3]="date" — 추가.
unset arr[1] — 삭제(인덱스는 그대로 유지).
associative 배열(딕셔너리).
declare -A — 선언 필수.
declare -A user; user[name]="alice"; user[age]=30.
${user[name]}.
${!user[@]} — 모든 키.
${user[@]} — 모든 값.
bash 4.0+에서 지원.
반복.
for item in "${arr[@]}"; do ...; done — 모든 요소.
for key in "${!user[@]}"; do echo "$key = ${user[$key]}"; done — 키-값 순회.
따옴표가 핵심 — 공백 있는 요소도 안전.
주의.
1) 따옴표 — "${arr[@]}" 거의 항상 따옴표(공백 안전).
2) ${arr}는 ${arr[0]}와 같음 — 의도와 다를 수 있음.
3) 큰 배열·복잡한 자료구조는 awk·python으로 — bash 배열은 단순 용도.
한 줄 요약
indexed는 arr=("a" "b")·${arr[0]}·${arr[@]}, associative는 declare -A 후 user[k]=v.
${!arr[@]} 모든 키.
따옴표 안전 처리 필수, 복잡한 건 awk·python.
더 알아볼 것
- mapfile/readarray — 입력 → 배열
- getopts와 배열 결합
- jq — JSON을 배열로