我尝试使用文件中的数据填充哈希表。使用此代码
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 :(得分: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