Я ссылаюсь Как определить хэш-таблицы в 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
, как указано ранее. Это была опечатка в вопросе, а не в моем коде. Мои извинения.