I\'m parsing query results from a mysql command (with the --table parameter)
local records=`echo \"${query}\" | $MYSQL -u $MyUSER -h $MyHOST -p$MyPASS --tabl
I had the same issue with the stderr output retrieved from the curl
command. I found that the output contains carriage return that needs to be removed. For the example above this could be done using the tr
tool:
for data in $records ;
do
data=$(echo "$data" | tr -d '\r')
test+="$data"
done
Make sure you're using Bash 3 or later. The +=
operator in Bash can be used to manipulate an Array. It will use the current value of the IFS
variable to split the tokens and add the value to the array.
Try:
test="$test $data"
to concatenate the data
Check that you use Unix line endings. Using Windows line endings caused the same behavior for me, overwriting strings.
Have a look at setting the IFS variable if you are seeing issues with line separators.
Something like
IFS="\n"
Also be careful with +=
as it can fall back to array manipulation depending on the version of BASH.