linux - 循环遍历具有相同键的关联数组

标签 linux bash shell unix associative-array

我目前正在尝试循环关联数组。该数组包含具有相同键的值。然而,当我尝试循环它时,我只得到一组结果。如何循环遍历包含相同键的所有值?

#!/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

关于linux - 循环遍历具有相同键的关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30141243/

相关文章:

linux - xterm 在 WSL 下失败 : not enough ptys

c++ - 为什么单纯的C++矩阵乘法比BLAS慢100倍?

arrays - 如何使用 bash 将数组的所有元素打印到文件中

shell - 缩进终端/shell 输出

linux - 如果在 bash 中运行特定命令,如何获得通知

linux - unixODBC 可以处理的最佳进程数是多少?

linux - ngrok 中的错误 - 无法完成隧道连接

php - 如何在 bash 脚本中访问 PHP 环境变量?

bash - 提取 shell 中两个行号之间的行

来自命令行的Mysql : execute sql code and then sql script