1

ファイルを取得して、ファイルの項目を 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 には複数の値が必要です。人を割り当てるとき、私はそれを間違っているか、間違った場所に置いているに違いないと考えています。しかし、私はかなり長い間それをいじっていて、正しく理解できません。以前に連想配列を使用したことがないため、少し問題があります。助けてくれてありがとう!

4

1 に答える 1