我试图从一个文件中读取,该文件以name:address的格式存储每个新行的用户名和地址,我希望只将地址存储到数组中。有没有办法做到这一点?我的代码目前看起来像这样:
while IFS=: read -r username address; do
array=${address}
done <userfile.txt
只存储文件中第一行的地址并停止。
答案 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[@]}