Ich habe dieses Array:
declare -A astr
Ich füge Elemente hinzu:
astr[elemA]=123
astr[elemB]=199
Aber später muss ich wissen, was die Index-IDs (elemA und elemB) sind und sie auflisten.
echo "${astr[@]}" #this only get me the values...
Ich habe dieses Array:
declare -A astr
Ich füge Elemente hinzu:
astr[elemA]=123
astr[elemB]=199
Aber später muss ich wissen, was die Index-IDs (elemA und elemB) sind und sie auflisten.
echo "${astr[@]}" #this only get me the values...
Antworten:
Sie können die Liste der "Schlüssel" für das assoziative Array folgendermaßen abrufen:
$ echo "${!astr[@]}"
elemB elemA
Sie können die "Schlüssel" folgendermaßen durchlaufen:
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]}
dies nicht funktioniert, nur ${!var[@]}
oder ${!var[*]}
:(
keys=(${!var[@]})
und ${keys[n]}
gab mir den Index, aber ungefähr zur gleichen Zeit wurde mir auch klar, dass ich meinen Ansatz überdenken muss.
astr2=(a b c d e);echo ${!astr2[@]};unset astr2[2];echo ${!astr2[@]}
funktioniert : thx!