2

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

      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
4

1 回答 1

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
于 2013-03-14T17:53:46.677 回答