遍历具有相同键的关联数组
Looping through an associative array with the same key
我目前正在尝试遍历关联数组。该数组包含具有相同键的值。但是,当我尝试遍历它时,我只得到一组结果。如何遍历包含相同键的所有值?
#!/bin/bash/
declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" )
for k in "${!details[@]}"
do
echo $k --- ${details[$k]}
done
结果:
cat --- sphynx
dog --- bulldog
bird --- parakeet
在 bash 中没有多个值与关联数组的同一个键关联这样的事情。最后一个简单地覆盖了前一个。这就是您无法检索它的原因。为了证明这一点,您可以打印数组的大小,并看到它是 3 而不是 6:
mureinik@computer ~ $ declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" )
mureinik@computer ~ $ echo ${#details[@]}
3
我目前正在尝试遍历关联数组。该数组包含具有相同键的值。但是,当我尝试遍历它时,我只得到一组结果。如何遍历包含相同键的所有值?
#!/bin/bash/
declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" )
for k in "${!details[@]}"
do
echo $k --- ${details[$k]}
done
结果:
cat --- sphynx dog --- bulldog bird --- parakeet
在 bash 中没有多个值与关联数组的同一个键关联这样的事情。最后一个简单地覆盖了前一个。这就是您无法检索它的原因。为了证明这一点,您可以打印数组的大小,并看到它是 3 而不是 6:
mureinik@computer ~ $ declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" )
mureinik@computer ~ $ echo ${#details[@]}
3