我尝试在Bash中迭代遍历一个关联数组。
这似乎很简单,但是循环不会按照数组的初始顺序进行。
以下是一个简单的脚本可以尝试:
#!/bin/bash
echo -e "Workspace\n----------";
lsb_release -a
echo -e "\nBash version\n----------";
echo -e $BASH_VERSION."\n";
declare -A groups;
groups["group1"]="123";
groups["group2"]="456";
groups["group3"]="789";
groups["group4"]="abc";
groups["group5"]="def";
echo -e "Result\n----------";
for i in "${!groups[@]}"
do
echo "$i => ${groups[$i]}";
done
输出:
Workspace
----------
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.2 LTS
Release: 14.04
Codename: trusty
Bash version
----------
4.3.11(1)-release.
Result
----------
group3 => 789
group2 => 456
group1 => 123
group5 => def
group4 => abc
为什么我没有 group1
、group2
等等?
我不想按字母数字顺序,我希望循环遵循数组最初声明的顺序...
有办法吗?