사전을 사용하려고 하는데 이상한 동작을 발견했습니다. 다음과 같은 사전을 만들 때:
declare -A servers
servers=( ["omega"]="dev" ["delta"]="test" ["beta"]="ppd" ["alpha"]="prd" )
echo "${servers["omega"]}"
첫 번째 요소가 아닌 마지막 요소 "prd"가 화면에 인쇄됩니다. 첫 번째 항목을 제외한 모든 항목을 제거하면 올바른 출력이 제공됩니다. 내가 본 모든 코드 예제는 위에서 설명한 대로 사전을 사용하기 때문에 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 누구든지 내 실수를 알아챌 수 있나요?
인사
답변1
@Yurko의 의견이 정확하다고 생각합니다.
버전 4 이전의 bash의 경우(예: /bin/bash
Mac):
- 이
declare -A
줄은 오류(declare: -A: invalid option
)를 발생시키고 배열은 다음과 같습니다.선언되지 않음. - 두 번째 줄은색인배열: 인덱스는 산술 표현식으로 평가되기 때문입니다.
- Bash 산술 표현식에서 "기본" 단어는 변수 이름으로 처리됩니다. 설정되지 않은 변수에는 0 값이 할당됩니다.
따라서 각 문자열에는 index 가 할당됩니다 0
.
이 시도:
declare -p servers
출력이 표시되어야 합니다.
declare -a servers='([0]="prd")'