Unterschied zwischen 'echo' und 'echo -e' [closed]

25

Was ist der Unterschied zwischen echound echo -e? Welche Anführungszeichen ("" oder '') sollten mit dem Befehl echo verwendet werden? dh: echo "Print statement"oder echo 'Print statement'? Welche verfügbaren Optionen können zusammen mit verwendet werden echo?

Venkatesh
quelle
3
Was ist die Hölle? echo -ewird von POSIX nicht definiert und variiert wahrscheinlich je nach Shell.
Jordanien
Beantwortet das deine Frage? unix.stackexchange.com/questions/65803/…
dhag
2
Verwenden Sie man echo, um das Handbuch für zu lesen echo.
Kindermädchen
echo führt seine Argumente nicht als Befehle aus, sondern gibt sie nur wieder
Anthon

Antworten:

33

echoallein zeigt eine Textzeile an. Es wird alles innerhalb der folgenden "..."zwei Anführungszeichen wörtlich genommen und nur so ausgedruckt, wie es ist. Wenn echo -eSie jedoch echoBackslash-Escapes interpretieren möchten, müssen Sie diese aktivieren. In diesem Sinne hier einige Beispiele

INPUT: echo "abc\n def \nghi" 
OUTPUT:abc\n def \nghi

INPUT: echo -e "abc\n def \nghi"
OUTPUT:abc
 def 
ghi

Hinweis: \nIst eine neue Zeile, dh ein Wagenrücklauf. Wenn Sie wissen möchten, welche anderen Sequenzen von Ihrem Terminal erkannt werden, geben Sie echo -ediese in man echoIhr Terminal ein.

3kstc
quelle
2
echoist in den meisten Schalen eingebaut. man echomöchte echostattdessen den Standalone-Befehl dokumentieren .
Stéphane Chazelas
Sie beschreiben das Verhalten von GNU echooder der GNU-Shell, echowenn Sie sich nicht im Unix-Konformitätsmodus befinden. Andernorts ist das Verhalten normalerweise anders.
Stéphane Chazelas
3

In den meisten Fällen kann die SHELL echokeine Escape-Sequenz annehmen ( \n \t). Wo wie echo -emöglich

echo -e " This is \n an \t example"

Einfache Anführungszeichen und doppelte Anführungszeichen dienen hauptsächlich zur Behandlung der Interpolationsprobleme. Weitere Informationen finden Sie hier. Warum ignoriert Echo meine Anführungszeichen?

Govind Kailas
quelle
Das ist umgekehrt. In den meisten Shells (ksh88, ksh93, pdksh, mksh, Bourne, zsh, dash, bash und das sh aller Unix-kompatiblen Systeme, einige davon mögen ksh93 oder bash nur in einigen Umgebungen) werden echoEscape-Sequenzen erweitert. Eine echoakzeptierte Implementierung -eist nicht POSIX-konform.
Stéphane Chazelas