将每行的一部分保存到bash中的数组中

时间:2017-09-28 15:59:32

标签: arrays bash

我试图从一个文件中读取,该文件以name:address的格式存储每个新行的用户名和地址,我希望只将地址存储到数组中。有没有办法做到这一点?我的代码目前看起来像这样:

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

只存储文件中第一行的地址并停止。

2 个答案:

答案 0 :(得分:2)

你几乎是对的!您只需使用+=数组提供的bash运算符(追加)附加到数组。

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

执行上述操作应该可以帮到你。请注意,括号在这里也很关键。 array+=(something)向数组附加一个新元素,而array+=something只是将文本附加到数组的第一个元素。稍后可选择在单独的行中打印数组内容,使用printf作为

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

答案 1 :(得分:2)

您可以使用array+=($address)形式添加数组元素。

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