Der folgende Code beschreibt die Situation am besten. Warum gibt die letzte Zeile kein Zeilenumbruchzeichen aus? Die Ausgabe jeder Zeile wird im Kommentar angezeigt. Ich benutze GNU Bash, Version 4.1.5
echo -n $'a\nb\n' | xxd -p # 610a620a
x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a
echo -ne "a\nb\n" | xxd -p # 610a620a
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62
tmp=$(somecommand; echo a)
... Dies hat sicherlich den Punkt nach Hause getrieben ... Bis ich das Beispiel gesehen habe, wäre meine Tendenz immer noch gewesen, es zu verwenden echo -n a
... aber natürlich !, es besteht keine Notwendigkeit dafür die -n
, weil durch die Befehlsersetzung die eingeführte abschließende Zeile auf jeden Fall entfernt wird! ... danke ...
tmp=$(somecommand; echo a); tmp=${tmp%a}