How do I preserve newlines in a quoted string in Bash? [duplicate]

Solution 1:

Add quotes to make it work:

echo "$MYSTRING"

Look at it this way:

MYSTRING="line-1
line-2
line3"

echo $MYSTRING

this will be executed as:

echo line-1 \
line-2 \
line-3

i.e. echo with three parameters, printing each parameter with a space in between them.

If you add quotes around $MYSTRING, the resulting command will be:

echo "line-1
line-2
line-3"

i.e. echo with a single string parameter which has three lines of text and two line breaks.