I found strange problem in bash: pushing to array is not working when I use while read
loop
Here is an example:
#!/bin/bash
LINES=$(cat <<EOF
line1
line2
line3
EOF
)
declare -a x
x+=("x0")
echo "$LINES" | while read line ; do
echo "debug: $line"
x+=("$line")
done
echo "${x[@]}"
echo "DONE"
echo "${x[@]}"
shows only x0
but must be x0 line1 line2 line3
If I use while
without read
everything is ok:
#!/bin/bash
declare -a x
COUNTER=0
while [ $COUNTER -lt 10 ]; do
let COUNTER=COUNTER+1
x+=("$COUNTER")
done
echo "${x[@]}" # 1 2 3 4 5 6 7 8 9 10
Please help me to figure out what is the problem
My bash version is 5.0.17(1)-release (x86_64-pc-linux-gnu)