Infelizmente, não há "elemento final" em uma matriz associativa.
Eu criei um array associativo da seguinte forma:
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"
O que eu quero fazer é obter o valor da chave no elemento final. Neste caso, o 1 em:
test_array[1,3]="BB"
Existe alguma maneira de fazer isso?
Obrigado
Infelizmente, não há "elemento final" em uma matriz associativa.
Chaves de matriz associativas não são mantidas em nenhuma ordem. A solução usual para esse problema é ter uma segunda matriz indexada que mantenha as chaves na ordem que você deseja lembrar. Por exemplo, uma matriz x
:
declare -a x
test_array[0,0]="1" x[${#x[*]}]='0,0'
test_array[0,1]="A" x[${#x[*]}]='0,1'
...
${#x[*]}
é o comprimento da matriz x
, portanto, cada linha acima está adicionando uma nova entrada
até o final da matriz x
(índice 0, depois 1, ...).
Você pode usar a última entrada dessa matriz (no comprimento do índice-1) para obter sua chave e valor:
echo ${x[${#x[*]}-1]}
echo ${test_array[${x[${#x[*]}-1]}]}
Tags bash shell-script