다음과 같은 연관 배열을 만들었습니다.
declare -A test_array
test_array[0,0]="1"
test_array[0,1]="A"
test_array[0,2]="11"
test_array[0,3]="AA"
test_array[1,0]="2"
test_array[1,1]="B"
test_array[1,2]="22"
test_array[1,3]="BB"
내가 원하는 것은 최종 요소의 키 값을 얻는 것입니다. 이 예에서 1은 다음 위치에 있습니다.
test_array[1,3]="BB"
이를 수행할 수 있는 방법이 있습니까?
감사해요
답변1
불행히도 연관 배열에는 "최종 요소"가 없습니다.
답변2
연관 배열 키는 주어진 순서대로 저장되지 않습니다. 이 문제를 해결하는 일반적인 방법은 기억하려는 순서대로 키를 보유하는 두 번째 인덱스 배열을 사용하는 것입니다. 예를 들어 배열은 다음과 같습니다 x
.
declare -a x
test_array[0,0]="1" x[${#x[*]}]='0,0'
test_array[0,1]="A" x[${#x[*]}]='0,1'
...
${#x[*]}
는 배열의 길이 x
이므로 위의 각 줄은 배열 끝에 새 항목을 추가합니다 x
(인덱스 0, 그 다음 1, ...).
그런 다음 해당 배열의 마지막 항목(인덱스 길이 1)을 사용하여 키와 값을 가져올 수 있습니다.
echo ${x[${#x[*]}-1]}
echo ${test_array[${x[${#x[*]}-1]}]}