我正在嘗試將文件中的項目存儲到bash中的關聯數組中。關聯數組可能不是我的行爲的最佳路線,但從我的研究來看,這似乎是一個很好的選擇。我有一個看起來像一個文件中:Bash中的關聯數組
personid
phone
phone
phone
personid
phone
phone
phone
請注意,persionid永遠是20位,而手機始終10.有沒有別的在這個文件中,並沒有空格,只是其中的每行一個。我想將這些映射到一個關聯數組,我的密鑰是personid,我的價值是手機。
我就上這一塊工作的代碼如下:
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,它允許多個值與一個鍵相關聯。就個人而言,由於bash腳本變得太複雜了,我現在已經切換到了Python。 – Dennis
謝謝丹尼斯,對我的關聯數組的誤解 – warlord786
請記住,'bash'不是用於數據處理,而是用於運行其他進程。 – chepner