Я пытаюсь взять файл и сохранить элементы из файла в ассоциативный массив в bash. Ассоциативный массив, возможно, не лучший курс для моего действия, но из моих исследований это, похоже, хорошо подходит. У меня есть файл, который выглядит следующим образом:Ассоциативные массивы в Bash
personid
phone
phone
phone
personid
phone
phone
phone
Пожалуйста, обратите внимание, persionid всегда 20 цифр, и телефон не всегда 10. Там нет ничего в этом файле, и никаких пробелов, только один из них в каждой строке , Я хотел сопоставить их с ассоциативным массивом, когда мой ключ был персонифицированным, а моя ценность была телефоном.
кода я работал в отношении этого куска заключается в следующем:
declare -A person
while read key; do
if [ ${#key} -eq 20 ] ; then
personID="$key"
else
phone="$key"
fi
person=(["$personID"]="$phone")
done < myFile.txt
for i in "${!person[@]}"
do
echo "key: $i"
echo "value: ${person[$i]}"
done
Это будет правильно хранить и печатать одну PersonId в качестве ключа и один телефона в качестве значения .... но там должно быть несколько значений для телефона. Я думаю, когда я назначаю человека, я должен поступать так неправильно или делать это неправильно. Но я играл с ним довольно давно и не могу понять. Никогда раньше не использовались ассоциативные массивы, поэтому у вас были небольшие проблемы. Заранее спасибо за помощь!
Ассоциативные массивы или карты хранения пар ключ-значение. Вы хотите использовать multimap, который позволяет связать несколько значений с одним ключом. Лично я бы переключился на Python, так как скрипт bash становится слишком сложным. – Dennis
Спасибо, Деннис, непонимание ассоциативных массивов с моей стороны – warlord786
Имейте в виду, что 'bash' не предназначен для обработки данных, а для запуска других процессов. – chepner