Ich lege eine Zeichenfolge mit hexdump
so 2031 3334 2e30 0a32 2032 3331 302e 000a
. Es ist klar, dass 0x0a
es sich um ein Zeichen für eine neue Zeile handelt. Wenn ich jedoch versuche, diese Zeichenfolge auszugeben, erhalte ich immer 1 430.2 2 13.0
- die neue Zeile wird durch ein Leerzeichen ersetzt, auch wenn ich das -e
Flag verwende.
Woran kann das liegen? Ruiniert das Tailing \0
den Output? Gibt es Alternativen zum Drucken 0x0a
einer neuen Zeile?
Danke und viele Grüße.
echo -e
. Danke, ich finde eine Lösung.printf "...\n"
anstattecho
.Antworten:
Das neue Zeilenzeichen mit dem
echo
Befehl ist "\ n". Das folgende Beispiel nehmen:Würde zur Ausgabe führen
Der Parameter "-e" ist hier wichtig.
quelle
"echo -e ..."
das Echo von bash korrekt funktioniert (z. B.dash
wird nur das "-e" ausgegeben ). Aber '/ bin / echo' kann (oder kann nicht) auch funktionieren. Leider (vielleicht passend) gibt es eine Menge Echos und Sie möchten sich nicht wirklich darum kümmern, welches Sie bekommen werden. Die Verwendung'printf "....\n"
ist eine portablere Option für alle Envs und Shells.POSIX 7 sagt, dass Sie nicht können
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
ist nicht definiert und Backslashes sind implementiert:es sei denn, Sie haben eine optionale XSI-Erweiterung.
Also benutze
printf
stattdessen:die Dateiformatnotation :
Beachten Sie auch, dass Ubuntu 15.10 und die meisten Distributionen
echo
beides implementieren :help echo
which echo
was zu Verwirrung führen kann.
quelle
Ich formatiere diese Zeichenkette endlich richtig mit
printf "$string"
. Danke euch allen.quelle
$string
sprichst du? Wie hängt das mit der Frage zusammen? Worum geht es nicht\n
wie bei den beiden anderen Antworten?