2017-09-05 38 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 

私のリストは道Iと比較すると同じ順序ではありませんそれを記録した。しかし、配列(値またはキーでソート)で記録したのと同じオーダーを探したい。

これを管理する方法はありますか?

+0

ほとんどの(スクリプティングの)言語では、結合配列(またはハッシュ)は、本質的に順序付けられていない名前:値の組です。 –

答えて

1

arr_list_people_nameに追加した順にキーを格納するには、インデックス付きの2番目の配列を使用する必要があります。

... 
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