ファイルを取得して、ファイルの項目を bash の連想配列に保存しようとしています。連想配列は私の行動に最適な方法ではないかもしれませんが、私の調査によると、それはうまく適合しているようです。次のようなファイルがあります。
personid
phone
phone
phone
personid
phone
phone
phone
persionid は常に 20 桁で、phone は常に 10 桁であることに注意してください。このファイルには他に何もなく、空白もありません。1 行に 1 つだけです。これらを連想配列にマップしたいと思いました。キーは personid で、値は phone です。
この作品に関して私が取り組んだコードは次のとおりです。
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
1 つの personID をキーとして、1 つの phone を値として正しく保存および出力しますが、phone には複数の値が必要です。人を割り当てるとき、私はそれを間違っているか、間違った場所に置いているに違いないと考えています。しかし、私はかなり長い間それをいじっていて、正しく理解できません。以前に連想配列を使用したことがないため、少し問題があります。助けてくれてありがとう!