Bash 扩展哈希表(字典)

标签 bash hash dictionary

我尝试用文件中的数据填充哈希表。使用此代码

      templates="./templates"
      declare -A ARRAY
      ARRAY+=([a]='b')
      ARRAY+=([d]='f')
      cat $templates | while read line 
      do
      a=`(echo $line | cut -d ':' -f 1)`
      b=`(echo $line | cut -d ' ' -f 2)`
      ARRAY+=([a]=b)
      done


      for x in ${!ARRAY[@]}
      do
      echo "$x - ${ARRAY["$x"]}"
      done

它只给我

  a - b
  d - f

模板文件是:

nazwisko: towar
Kowalski: ksiazki
Nowak: programy

最佳答案

您的代码存在一个问题,并且可以进行大量简化。

一、问题:

这一行:

ARRAY+=([a]=b)

应该是:

ARRAY+=(["$a"]="$b")

为了简化:

declare -A arr=([a]=b [d]=f)
while IFS=': ' read -r a b; do
    arr+=(["$a"]="$b")
done < "$templates"

for i in "${!arr[@]}"; do
    printf '%s - %s\n' "$i" "${arr[$i]}"
done

关于Bash 扩展哈希表(字典),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15416248/

相关文章:

mysql - Bash while 循环等待 mysql 导入

linux - 将变量与数字进行比较

MySQL 哈希密码用冒号分隔符存储

c# - 如何获取 user.config 路径中​​的哈希值?

arrays - Perl中 'one dimensional'散列对数组的优势

Bash stderr 和 stdout 重定向失败

bash - 用于使用 bash 读取两个文件的嵌套循环

python - 使用字典定义图形和查找路径

android - 适配器显示所有选项卡中的最后一个值

java - 如果 Map 的键具有相似的属性但顺序不同,如何将它们视为相等?