Bash扩展哈希表(字典)

时间:2013-03-14 17:32:47

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

1 个答案:

答案 0 :(得分:6)

您的代码存在一个问题,并且可能会发生大量简化。

首先,问题是:

这一行:

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