Me encontré con el mismo problema, una cotización ayudará
[email protected]:~/apps$ apps="abc
> def"
[email protected]:~/apps$ echo $apps
abc def
[email protected]:~/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.