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

コードに関する1つの問題と、発生する可能性のある多くの単純化。

まず、問題:

この行:

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 に答える