GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So echoen Sie eine neue Zeile in Bash-Shell-Skripten

Der echo-Befehl fügt am Ende automatisch eine neue Zeile hinzu. Das ist cool.

Aber was ist, wenn Sie nur eine leere neue Zeile anzeigen möchten? Oder wenn Sie etwas ausgeben möchten, das eine neue Zeile enthält?

Die gute Nachricht ist, dass Sie mit echo das Zeilenumbruchzeichen \n verwenden können um eine neue Zeile innerhalb derselben Ausgabezeile zu drucken, wenn Sie -e verwenden Möglichkeit:

echo -e "Name\nAddress\nPhone Number"

Wenn Sie den obigen Befehl ausführen, erhalten Sie diese Ausgabe:

Name
Address
Phone Number

Das ist schön, oder? Lassen Sie uns einen genaueren Blick darauf werfen.

Ein Zeilenumbruch ist ein Begriff, den wir verwenden, um anzugeben, dass die aktuelle Zeile beendet ist und der Text von der Zeile unter der aktuellen fortgesetzt wird. In den meisten UNIX-ähnlichen Systemen \n wird verwendet, um einen Zeilenumbruch anzugeben. Es wird als Newline-Zeichen bezeichnet.

Der echo-Befehl ist standardmäßig deaktiviert die Interpretation von Backslash-Escapes. Wenn Sie also versuchen, einen Zeilenumbruch mit der Escape-Sequenz '\n' anzuzeigen, werden Sie ein Problem feststellen.

$ echo Hello\nworld
Hellonworld

$ echo 'Hello\nworld'
Hello\nworld

Das Einschließen von Text in einfache Anführungszeichen als String-Literal funktioniert ebenfalls nicht.

Das war kein erwartetes Ergebnis. Um tatsächlich eine neue Zeile auszugeben, können Sie das '-e'-Flag verwenden, um dem echo-Befehl mitzuteilen, dass Sie die Interpretation von Backslash-Escapes aktivieren möchten.

$ echo -e 'Hello\nworld'
Hello
world

Schön, das ist es, wonach Sie suchen.

Lassen Sie mich einige andere Möglichkeiten zeigen, das Zeilenumbruchzeichen anzuzeigen.

echo eine Variable, die eine neue Zeile enthält

Sie können einen String in einer Bash-Variablen speichern und ihn dann mit dem '-e'-Flag ausgeben.

$ str="Hello\nworld"

$ echo -e $str
Hello
world

Verwenden Sie das '$'-Zeichen anstelle des -e-Flags

Das Dollarzeichen „$“ wird in der Bash als „Erweiterungszeichen“ bezeichnet. Dies ist das Zeichen, das ich im vorherigen Beispiel verwendet habe, um auf den Wert einer Variablen in der Shell zu verweisen.

Wenn Sie sich das folgende Snippet genau ansehen, werden Sie feststellen, dass das Erweiterungszeichen in diesem Fall einen temporären Wert enthält.

$ echo Hello$'\n'world
Hello
world

Oder Sie können den gesamten String als 'temporäre Variable' verwenden:

$ echo $'Hello\nworld'
Hello
world

Ich würde lieber das -e verwenden Flagge, obwohl.

echo Ihr Echo, um etwas mit einer neuen Zeile zu drucken

Wenn Sie einen Textabschnitt echoen, fügt der echo-Befehl automatisch eine neue Zeile (und so können Sie dies verhindern) am Ende Ihres Textes hinzu.

Das bedeutet, dass Sie mehrere echo-Befehle miteinander verketten können, um einen Zeilenumbruch zu bewirken.

$ echo Hello; echo world
Hello
world

Verwenden Sie printf, um Zeilenumbrüche in der Bash-Shell zu drucken

printf ist ein weiteres Befehlszeilentool, das im Wesentlichen Text auf dem Terminal ausgibt, aber es Ihnen auch ermöglicht, Ihren Text zu formatieren.

Die Verwendung ist sehr einfach und ähnlich wie Echo, aber etwas zuverlässiger und konsistenter.

$ printf 'Hello\nworld\n'
Hello
world

Wie erwartet haben Sie einen Zeilenumbruch ohne Flags.

Schlussfolgerung

Persönlich würde ich es vorziehen, beim Flag -e zu bleiben oder den Befehl printf zu verwenden, um die neuen Zeilen in der Ausgabe anzuzeigen. Ich empfehle Ihnen, dasselbe zu tun, aber Sie können gerne experimentieren.


Linux
  1. Wie man einen Knall wiederholt!?

  2. Wie ändere ich die Cron-Shell (sh in Bash)?

  3. So vergleichen Sie Zeichenfolgen in Bash Shell-Skripten

  4. Spezielle Bash-Parameter mit 4 Beispiel-Shell-Skripten erklärt

  5. Gewusst wie:Unbegrenzter Bash/Shell-Verlauf?

So erstellen Sie Dokumente mit Bash-Skripten

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

So installieren Sie Linux Bash Shell unter Windows 10

Wie verwende ich if-else in Shell-Skripten?

Wie liest man Befehlszeilenargumente in Shell-Skripten?