Ho riscontrato lo stesso problema, una citazione aiuterà
[email protected]:~/apps$ apps="abc
> def"
[email protected]:~/apps$ echo $apps
abc def
[email protected]:~/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.