Narazil jsem na stejný problém, pomůže nabídka
[email protected]:~/apps$ apps="abc
> def"
[email protected]:~/apps$ echo $apps
abc def
[email protected]:~/apps$ echo "$apps"
abc
def
Citace vaše proměnné. Zde je důvod:
$ f="fafafda
> adffd
> adfadf
> adfafd
> afd"
$ echo $f
fafafda adffd adfadf adfafd afd
$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd
Bez uvozovek shell nahradí $TEMP se znaky, které obsahuje (jeden z nich je nový řádek). Potom před vyvoláním echo shell rozdělí tento řetězec na více argumentů pomocí Internal Field Separator (IFS) a předá výsledný seznam argumentů echo . Ve výchozím nastavení IFS je nastaveno na mezery (mezery, tabulátory a nové řádky), takže shell seká vašich $TEMP řetězec do argumentů a nikdy neuvidí nový řádek, protože jej shell považuje za oddělovač, stejně jako mezeru.