Reputation: 55670
Is it possible to retain trailing newlines when storing the output of a command in a variable?
$ echo "foo
" # newline appears after foo
foo
$ MYVAR="$(echo "foo
")"
$ echo "${MYVAR}" # newline is stripped
foo
$
Upvotes: 1
Views: 209
Reputation: 531165
You can add a sentinel to the end of the stream:
$ my_var=$'foo\n\n'
$ captured=$( echo -n "$my_var"; echo -n "x" )
which you then remove:
$ captured=${captured%x}
$ echo "$captured"
Upvotes: 2