Warum gibt mir echo -e “ \ n ” zwei leere Zeilen anstelle von einer?
On Februar 1, 2021 by admin Sagen wir, es gibt „sa Zeile“ aaaa „in file.txt, und ich möchte NUR EINE leere Zeile danach hinzufügen und dann eine hinzufügen Textzeile nach der leeren Zeile.
Ich habe:
echo -e „\ n“ >> file.txt
echo „bbbb“ >> file.txt
Und dann habe ich ZWEI leere gesehen Zeilen zwischen aaaa und bbbb
Wenn ich nur echo „bbbb“ >> file.txt verwende, gibt es keine leere Zeile zwischen den beiden Textzeilen.
Warum passiert das und wie werde ich es los ?
Kommentare
- OK, lassen Sie mich die richtige Antwort zusammenfassen: \ n bedeutet, den Cursor in die nächste Zeile zu bewegen und nicht ' bedeutet keine leere Zeile.
Antwort
echo
gibt die Zeichenfolge aus, die Sie als Argument verwenden, und fügt am Ende der ausgegebenen Zeichenfolge ein Zeilenumbruchzeichen hinzu, um die Zeile zu beenden.
Mit
echo "string"
Sie erhalten string
und eine neue Zeile am Ende.
Daher Mit
echo -e "\n"
erhalten Sie Ihre neue Zeile und am Ende eine neue Zeile (d. h. zwei leere Zeilen).
Wenn Sie keine zusätzliche neue Zeile möchten (dh eine nicht abgeschlossene Zeile ausgeben möchten), verwenden Sie echo
mit der -n
Option oder in diesem Fall, wenn Sie nur eine leere Zeile einfügen möchten, verwenden Sie einfach echo ""
oder echo
überhaupt ohne Argument.
Von help echo
in bash
:
Options: -n do not append a newline -e enable interpretation of the following backslash escapes
Wenn Sie etwas möchten, das auf andere Shells als bash
portierbar ist, verwenden Sie stattdessen printf
:
printf "\n" >>file.txt printf "bbbb\n" >>file.txt
Oder eine andere Möglichkeit, diese beiden Anweisungen mit einer einzigen Umleitung auszuführen:
{ printf "\n" printf "bbbb\n" } >>file.txt
Oder einfach
printf "\nbbbb\n" >>file.txt
Verwandte Themen:
Kommentare
- Wenn ' tatsächlich a newline wird automatisch zur ersten Zeile hinzugefügt, wenn ich Echo verwendet, warum habe ich dann bei meinem zweiten Versuch (beschrieben unter meiner Frage) keine Leerzeile zwischen dem Text erhalten?
- @OhLook Bei Ihrem ersten Versuch fügen Sie zwei Zeilenumbrüche hinzu (eine ist Ihre
\n
, die andere stammt aus der neuen Zeile, dieecho
immer hinzufügt). Bei Ihrem zweiten Versuch fügen Sie einfach die Zeichenfolgebbbb
mit einem Zeilenumbruch am Ende hinzu. Ich sehe ' nicht wirklich, woher Ihre Verwirrung kommt. - @OhLook Warum sollte es eine leere Zeile geben? Ihre Datei würde
aaaa\nbbbb\n
enthalten, wobei dieaaaa\n
von Anfang an vorhanden war und diebbbb\n
hinzugefügt vonecho 'bbbb'
. Wenn Sieecho -e '\n'
ausführen, wird\n\n
zum vorhandenen Inhalt der Datei hinzugefügt. Wenn es bereitsaaaa\n
enthält, erhalten Sie 'aaaa\n\n\n
. - @OhLook
\n
ist ein Zeilenumbruchzeichen . Der Cursor bewegt sich zum Anfang der nächsten Zeile. Hätte es von Anfang an keine neue Zeile am Ende vonaaaa
gegeben, würdeaaaabbbb
in einer einzelnen Zeile angezeigt, wennbbbb
. - @OhLook
echo -e '\n'
fügt zwei neue Zeilen hinzu. Siehe vorherigen Kommentar. Die Datei enthält drei Zeilenumbrüche. Das heißt, die neue Zeile, die das Ende der Zeileaaaa
ist (die von Anfang an vorhanden war), und dann zwei, die durchecho -e '\n'
hinzugefügt wurden . Dies ergibt zwei leere Zeilen.
Schreibe einen Kommentar