Ho riscontrato lo stesso problema, una citazione aiuterà
example@unixlinux.online:~/apps$ apps="abc
> def"
example@unixlinux.online:~/apps$ echo $apps
abc def
example@unixlinux.online:~/apps$ echo "$apps"
abc
def
Citazione le tue variabili Ecco perché:
$ f="fafafda
> adffd
> adfadf
> adfafd
> afd"
$ echo $f
fafafda adffd adfadf adfafd afd
$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd
Senza virgolette, la shell sostituisce $TEMP con i caratteri che contiene (uno dei quali è una nuova riga). Poi, prima di invocare echo shell divide quella stringa in più argomenti usando il Internal Field Separator (IFS) e passa l'elenco di argomenti risultante a echo . Per impostazione predefinita, il IFS è impostato su spazi bianchi (spazi, tabulazioni e newline), quindi la shell taglia il tuo $TEMP stringa in argomenti e non riesce mai a vedere la nuova riga, perché la shell lo considera un separatore, proprio come uno spazio.