arrays - 维护 bash 关联数组的插入顺序

标签 arrays bash sorting

我正在用 Bash 编写脚本。

我的关联数组有问题,当我像这样在我的数组中放置一条记录时:

declare -A arr_list_people_name

我将文本放入循环关联数组的方式(将文本排序):

arr_list_people_name[$peopleId]+=$peopleName

我读取数组的方式:

for KEY in "${!arr_list_people_name[@]}"; do
  # Print the KEY value
  echo "Key: $KEY"
  # Print the VALUE attached to that KEY
  echo "Value: ${arr_list_people_name[$KEY]}"
done

与我记录的方式相比,我的列表顺序不同。但是,我希望找到与我在数组中记录它的方式相同的顺序(按值或键排序)。

您知道如何管理它吗?

最佳答案

您需要使用第二个索引数组按照您将键添加到 arr_list_people_name 的顺序存储键。

...
arr_list_people_name[$peopleId]+=$peopleName
arr_order+=("$peopleId")
...

for id in "${arr_order[@]}"; do
    echo "Key: $id"
    echo "Value: ${arr_list_people_name[$id]}"
done

关于arrays - 维护 bash 关联数组的插入顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46054677/

相关文章:

c - 使用函数操作 C 中的结构

javascript - 尝试将字符串数据转换为数值数据,将数据放入数组数组(Json)中

linux - 如何在 Linux 中使用 Bash 脚本对这些值进行排序?

java - 选择排序错误

javascript - 高级排序算法

PHP 可迭代到数组或可遍历

c++ - 如何在 C++ 中更改二维数组中数字的位置?

bash - 使用 sed 将 yaml 文件中的值替换为多行字符串

swift - 迪尔德 : Library not loaded; llbuild image not found

Java anagram 查找器算法