使用相同的键循环遍历一个关联数组
我目前正试图循环访问一个关联数组。该数组包含具有相同键的值。但是,当我试图循环使用它时,我只能得到一组结果。我如何遍历包含相同键的所有值?使用相同的键循环遍历一个关联数组
#!/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:
[email protected] ~ $ declare -A details=([dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet")
[email protected] ~ $ echo ${#details[@]}
3
任何方式来完成一个解决方法吗? –
使用不同的键。如果你真的需要与每个键相关的多个值,那么“bash”是该作业的错误语言。 – chepner
@Code_Ed_Student,你可以实现,如果不是以字符串的形式让它们成为一个数组 - 你可以为它添加任何新的值,以获得相同的密钥。 – boardrider
要查看完整的关联数组:'声明-p details' – Cyrus