Eu tenho essa matriz:
declare -A astr
Eu adiciono elementos a ele:
astr[elemA]=123
astr[elemB]=199
Mais tarde, porém, preciso saber quais são os IDs de índices (elemA e elemB) e listá-los.
echo "${astr[@]}" #this only get me the values...
Eu tenho essa matriz:
declare -A astr
Eu adiciono elementos a ele:
astr[elemA]=123
astr[elemB]=199
Mais tarde, porém, preciso saber quais são os IDs de índices (elemA e elemB) e listá-los.
echo "${astr[@]}" #this only get me the values...
Respostas:
Você pode obter a lista de "chaves" para a matriz associativa da seguinte forma:
$ echo "${!astr[@]}"
elemB elemA
Você pode iterar sobre as "chaves" da seguinte maneira:
for i in "${!astr[@]}"
do
echo "key : $i"
echo "value: ${astr[$i]}"
done
$ for i in "${!astr[@]}"; do echo "key : $i"; echo "value: ${astr[$i]}"; done
key : elemB
value: 199
key : elemA
value: 123
${!var[index]}
não trabalho, única ${!var[@]}
ou ${!var[*]}
fazer :(
keys=(${!var[@]})
e ${keys[n]}
, então , fornecendo o índice, mas, ao mesmo tempo, também percebi que precisava repensar minha abordagem.
astr2=(a b c d e);echo ${!astr2[@]};unset astr2[2];echo ${!astr2[@]}
thx!