2017-09-28 10 views
2

ユーザー名とアドレスを格納するファイルから、新しい行のそれぞれにname:addressの形式で読み込みしようとしていますが、そのアドレスのみを配列に格納したい。これを行う方法はありますか?私のコードは現在次のようになっています:各行の一部をbashで配列に保存する

while IFS=: read -r username address; do 
    array=${address} 
done <userfile.txt 

これは、ファイルの最初の行からのアドレスのみを格納して停止しています。

答えて

2

あなたはほぼ正しいです! bash配列が提供する+=演算子(追加)を使用して配列に追加するだけです。

declare -a myArray=() 
while IFS=: read -r username address; do 
    myArray+=("$address") 
done < userfile.txt 

上記を実行すると、あなたのトリックを行う必要があります。ここでは括弧も重要であることに注意してください。 array+=(something)は配列に新しい要素を追加し、array+=somethingは配列の最初の要素にテキストを追加するだけです。必要に応じて後では、配列要素を追加するarray+=($address)フォームを使用することができ

+2

括弧もここでは重要です。 'array + =(something)'は配列に新しい要素を追加し、 'array + = something'は配列の最初の要素にテキストを追加するだけです。 –

+0

@GordonDavisson:フィードバック感謝! – Inian

+1

それは動作します!とても有難い! – user3925467

2
printf "%s\n" "${myArray[@]}" 

として別個の回線使用printfの各配列の内容を印刷します。

array=() 
while IFS=: read -r username address; do 
    array+=("$address") 
done < userfile.txt 
echo ${array[@]} 
関連する問題