declare -a geoInfo # declare an array geoInfo=("${geoInfo[@]}" "a" "b") cat /tmp/loc.txt |while read line; do geoInfo=("${geoInfo[@]}" "c" "d") echo "(${line})" # confirms ${line} is as expected. fine. *This happens TWICE* done geoInfo=("${geoInfo[@]}" "e" "f") echo "${geoInfo[@]}" # Output is "a b e f". What happened to "c d" ?!?!