2013-03-14 75 views
2

我嘗試用文件中的數據填充我的哈希表。有了這個代碼Bash擴展哈希表(字典)

 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 
+0

什麼是你所期望的輸出? – 2013-03-14 17:36:13

+0

@DaveJarvis:我期待nazwisko - towar,kowalski - ksiazki等數組 – user1902400 2013-03-14 17:43:11

回答

5

一個問題與您的代碼,以及大量的簡化可能發生的。

首先,問題:

這條線:

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