bash - bash 中的哈希集或关联数组

标签 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

最佳答案

声明一个关联数组,其中您的服务器名称作为键,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

关于bash - bash 中的哈希集或关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48790167/

相关文章:

bash - 如何从文件中读取变量,每行有多个变量?

Java:记住处理哪些对象的有效方法

linux - bash 脚本的选项(对此全新)

ruby-on-rails - 如何在 bash shell 上捕获 rails runner "MyCloud::Deployment.checkuser"的输出

linux - 为什么这个 c-shell 脚本会停止?

shell - 存储 shell 脚本密码的最佳方法是什么?

C# 集合性能 : Are Hashset<string> and Dictionary<string, IList<int>> 为此目的最快的集合?

java - HashSet 编译错误

linux - 查找重复对比较两个文件

linux - 删除未使用的文件夹和需要的副本