【问题标题】:Create and access the hash array in shell script在 shell 脚本中创建和访问哈希数组
【发布时间】:2016-03-10 13:08:53
【问题描述】:

大家好,

是否可以像在 java 中一样在 Shell 脚本中使用 HashMap。我试图找到哈希数组以将值作为键和值再次我需要该数组作为其他 HashMap 中键的值。 前任。 Abc= A:3 B:6 PQR= N:8 Y:1 O:12

在这里,我希望 Abc 作为哈希数组,其中 (Key,Val)=(A,3),(B,6) 再次与 PQR 相同我希望 Abc 哈希数组作为 Data 的值 数据 (Key,Val)= ("Abc",$Abc) ("PQR",$PQR)

所以稍后我可以通过在Data中搜索“Abc”来调用数组的值,并且应该得到Abc的所有键值。

假设我从其他 sh 文件中调用类似

Comp_Abc = get("Abc") 它应该将 Abc 的值替换为

Comp_Abc = A:3 B:6

我们可以在 shell 脚本中做所有这些事情吗?:) 我希望有人尝试过同样的方法,如果可能,请帮助我。

提前致谢
拉达

【问题讨论】:

    标签: arrays shell hash nested


    【解决方案1】:

    是的,它们在 Bash 中被称为“关联数组”,并且从 4.0 版本开始支持。标准 POSIX shell 不支持它们。这是一个简单的例子:

    declare -A cities    # Required to declare 'cities' as an associative array
    
    cities=([Australia]=Canberra,[Eire]=Dublin,[France]=Paris, 
            [Finland]=Helsinki,[UK]=London,[US]='Washington DC')
    echo ${cities[UK]}
    
    country=Iceland
    cities[$country]=Reykjavik
    

    至于嵌套关联数组,我不能说我曾经尝试过,但你也许可以给我们一个参考,见Set a nameref variable as 'associative array' typeset - bash

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 2012-05-14
      • 2013-03-22
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 2015-06-26
      • 2012-11-23
      相关资源
      最近更新 更多