Me encontré con el mismo problema, una cotización ayudará
example@unixlinux.online:~/apps$ apps="abc
> def"
example@unixlinux.online:~/apps$ echo $apps
abc def
example@unixlinux.online:~/apps$ echo "$apps"
abc
def
Cita tus variables Aquí está el por qué:
$ f="fafafda
> adffd
> adfadf
> adfafd
> afd"
$ echo $f
fafafda adffd adfadf adfafd afd
$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd
Sin comillas, el shell reemplaza a $TEMP con los caracteres que contiene (uno de los cuales es una nueva línea). Entonces, antes de invocar echo shell divide esa cadena en múltiples argumentos usando el Internal Field Separator (IFS), y pasa la lista resultante de argumentos a echo . Por defecto, el IFS está configurado en espacios en blanco (espacios, tabulaciones y líneas nuevas), por lo que el shell corta su $TEMP cadena en argumentos y nunca llega a ver la nueva línea, porque el shell lo considera un separador, al igual que un espacio.