bash中的散列集或关联数组

时间:2018-02-14 14:58:49

标签: bash shell hashset

在bash脚本中,我如何实现以下目标:

让我们假设我们有一个关联数组,如下所示:

servers = (db-test-1=64, db-test-2=128, db-test-3=32)

我希望能够读取服务器的名称,以及代表服务器RAM大小的服务器的值。

因此,例如,当我遍历上面所谓的关联数组时(我知道上面的语法不正确,但你明白了),我想将服务器名称存储在一个名为server_name的变量中,与服务器关联的RAM大小称为mem_size变量。因此,当我回显时,for循环的第一次迭代应产生以下内容:

for i in "${containers[@]}"
    do
        \\some code here to get server names and memory size from the array
        echo "Server Name is" $server_name
        echo "Server Memory size is" $mem_size
done

结果应该是:

Server Name is db-test-1
Server Memory Size is 64

1 个答案:

答案 0 :(得分:3)

声明一个关联数组,其服务器名称为键,RAM大小为值:

declare -A servers=([db-test-1]=64 [db-test-2]=128 [db-test-3]=32)

然后将其用作:

for s in "${!servers[@]}"; do
   echo "Server Name: $s => Memory Size: ${servers[$s]}"
done
Server Name: db-test-1 => Memory Size: 64
Server Name: db-test-2 => Memory Size: 128
Server Name: db-test-3 => Memory Size: 32