Mam tę tablicę:
declare -A astr
Dodaję do niego elementy:
astr[elemA]=123
astr[elemB]=199
Ale później muszę wiedzieć, jakie są identyfikatory indeksów (elemA i elemB) i wymienić je.
echo "${astr[@]}" #this only get me the values...
Mam tę tablicę:
declare -A astr
Dodaję do niego elementy:
astr[elemA]=123
astr[elemB]=199
Ale później muszę wiedzieć, jakie są identyfikatory indeksów (elemA i elemB) i wymienić je.
echo "${astr[@]}" #this only get me the values...
Odpowiedzi:
Możesz uzyskać listę „kluczy” dla tablicy asocjacyjnej w następujący sposób:
$ echo "${!astr[@]}"
elemB elemA
Możesz iterować po „kluczach” w następujący sposób:
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]}
to nie działa, tylko ${!var[@]}
lub ${!var[*]}
rób :(
keys=(${!var[@]})
a potem ${keys[n]}
, dając mi indeks, ale mniej więcej w tym samym czasie zdałem sobie sprawę, że muszę przemyśleć swoje podejście.
astr2=(a b c d e);echo ${!astr2[@]};unset astr2[2];echo ${!astr2[@]}
thx!