我参考的是How to define hash tables in Bash?。我正在尝试解析包含如下测试数据的dict.csv文件:
1,orange
2,apple
3,banana sandwich
4,grape juice
5,strawberry
然后使用Bash 4解决方案,创建键/值字典。这是我当前的代码(请注意,键/值在反转时是故意的):
declare -A dict
fileName="dict.csv"
OIFS=$IFS
IFS=','
while read value key
do
dict+=( ["$key"]="$value" )
done < $fileName
IFS=$OIFS
echo ${dict["orange"]}
echo ${dict["apple"]}
echo ${dict["banana sandwich"]}
echo ${dict["grape juice"]}
echo ${dict["strawberry"]}
我希望我的输出是:
1
2
3
4
5
但是我的输出是:
1
2
3
<blank>
<blank>
我注意到空白行的数量等于其中带有空格的键的数量(例如banana salad
和grape juice
)。我以为这个问题是由于我对IFS,while循环和bash的解析方式的误解引起的,但我不知所措,无法理解我所缺少的内容。
谢谢您的见解。
编辑:在dict.csv的内容中输入错误,现在3包含banana sandwich
,而不是前面提到的banana salad
。这是问题的错字,而不是我的代码。抱歉。
我发现了我的问题。感谢Barmar指出这一点。我的[[dict.csv末尾没有换行符,导致解析错误。还有其他问题,但与该问题无关。谢谢您的帮助!