2017-09-05 102 views
1

我在Bash中编写脚本。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 

我的列表不是以相同的顺序进行比较的方式,我记录它。不过,我想找到与我在数组中记录的顺序相同的顺序(按值或键排序)。

你知道如何管理吗?

+0

在大多数(脚本?)语言中,关联数组(或散列)本质上是无序的名称:值对集合。 –

回答

1

您需要使用第二个索引数组来按照将它们添加到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