I have a issue when iterating string with lines. Check the following code:
file='[
{"name" : "a b"},
{
"name" : "c"
},
{
"name" : "d"
}
]'
lines=$(jq -c '.[]' <<< "$file")
echo "lines $lines"
echo "\niterating #1:"
for i in ${lines//\\n/ }; do
echo "item: $i"
done
echo "\niterating #2:"
while read -r line; do
echo "item: $line"
done <<< $lines
And the result is note expected. It breaks a line into two because there is a space in a field value.
lines {"name":"a b"}
{"name":"c"}
{"name":"d"}
iterating #1:
item: {"name":"a
item: b"} # <-- don't want break here
item: {"name":"c"}
item: {"name":"d"}
iterating #2:
item: {"name":"a b"} {"name":"c"} {"name":"d"} # <-- seems no new line?