echo(1) echo(1)
NAME
echo - Aufruf-Argumente ausgeben
SYNTAX
echo [argument ...]
BESCHREIBUNG
Das Kommando echo schreibt seine Aufruf-Argumente auf die Standardaus-
gabe und beendet sich. Vor der Ausgabe passiert folgendes:
1. Wie bei jedem anderen Kommando, interpretiert die Shell die Komman-
dozeile und übergibt an echo die aufbereiteten Aufruf-Argumente
[siehe sh(1)]. Argument-Trenner sind für die Shell Leer- und Tabu-
latorzeichen.
2. echo interpretiert noch verbliebene Sonderzeichen, die die Ausgabe
steuern (siehe Beschreibung zu argument).
3. echo gibt die bearbeiteten Argumente wie folgt aus:
- Die einzelnen Argumente werden durch ein Leerzeichen voneinander
getrennt, auch wenn Sie beim Aufruf mehrere Argument-Trennzei-
chen zwischen den Argumenten eingegeben haben.
- Nach dem letzten Argument wird ein Neue-Zeile-Zeichen ausgege-
ben.
Sie können mit echo
⊕ den Inhalt von Shell-Variablen abfragen,
⊕ Meldungen in Shell-Prozeduren erzeugen und so die Funktionsweise
testen,
⊕ testen, wie die Shell einen Kommando-Aufruf interpretiert, ohne daß
das Kommando ausgeführt wird,
⊕ Daten in eine Pipe schicken und testen, wie die Pipe diese Eingabe
verarbeitet.
ARGUMENTE
argument
Beliebige Zeichenkette, die jeweils durch Leer- oder Tabulatorzei-
chen begrenzt wird. Das letzte Argument wird durch ein Kommando-
Trennzeichen abgeschlossen.
argument nicht angegeben: echo gibt nur eine Leerzeile aus.
Sie können beliebig viele Argumente angeben, jeweils getrennt durch
mindestens ein Tabulator- bzw. ein Leerzeichen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
echo(1) echo(1)
Wie bei jedem anderen Kommando auch wird die Zeichenkette zunächst
von der Shell interpretiert:
- Enthält die Zeichenkette die Zeichen Stern * bzw. Fragezeichen ?
bzw. [...], so ersetzt die Shell diese Zeichenkette durch alle
passenden Dateinamen im aktuellen Verzeichnis. Paßt kein Datei-
name, übergibt die Shell diese Zeichenkette unverändert an echo.
- 'zeichenkette'
Die Hochkommas entwerten alle Sonderzeichen der Shell. Die Shell
übergibt die Zeichenkette ohne Hochkommas als ein Argument an
echo. Alle zwischen den Hochkommas eingegebenen Leer-,
Tabulator- und Neue-Zeile-Zeichen bleiben erhalten.
- `zeichenkette`
Die Shell führt zeichenkette als Reliant UNIX Kommando aus und
übergibt an echo die Ausgabe dieses Kommandos. Dabei interpre-
tiert die Shell in der Ausgabe die Zeichen als Argument-Trenn-
zeichen, die der Umgebungsvariablen IFS zugewiesen sind. Stan-
dardmäßig sind IFS das Leer-, das Tabulator- und das Neue-
Zeile-Zeichen zugewiesen.
- "zeichenkette"
Die Anführungszeichen entwerten alle Sonderzeichen der Shell bis
auf Gegenschrägstrich \, Gegenhochkommas `...` und Dollarzeichen
$. Die Shell übergibt die bearbeitete Zeichenkette als ein Argu-
ment an echo. Alle zwischen den Anführungszeichen eingegebenen
Leer-, Tabulator- und Neue-Zeile-Zeichen bleiben erhalten.
Das eingebaute Kommando echo interpretiert zusätzlich die nachfol-
gend beschriebenen Steuerzeichen. Da der Gegenschrägstrich für die
Shell eine Sonderbedeutung hat, muß er entwertet werden:
- Durch einen vorangestellten Gegenschrägstrich \
Das gilt auch, wenn das Argument, das dieses Steuerzeichen ent-
hält, in Anführungszeichen eingeschlossen ist.
- Durch Hochkommas '...'
Ist das Argument, das dieses Steuerzeichen enthält, in Hochkom-
mas eingeschlossen, so ist der Gegenschrägstrich bereits entwer-
tet.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
echo(1) echo(1)
Beispiel:
_________________________
| Eingabe | Ausgabe |
|_____________|__________|
| hallo\\bi | halli |
|_____________|__________|
| hallo'\'bi | halli |
|_____________|__________|
| 'hallo\bi' | halli |
|_____________|__________|
| "hallo\\bi" | halli |
|_____________|__________|
Die folgenden Steuerzeichen beeinflussen die Ausgabe von echo,
falls der Gegenschrägstrich entsprechend entwertet ist:
\a (a - alert) Warnung, Klingel; bei Ausgabe auf den Bildschirm
ertönt in der Regel ein Piepston, bei Ausgabe auf den Drucker
hat das Zeichen keine Wirkung.
\a entspricht CTRL-G
\a wird nur von der Korn-Shell ksh interpretiert.
\b (b - backspace) echo setzt die Schreibmarke um eine Spalte
zurück. Ein nach dem Steuerzeichen eingegebenes Zeichen über-
schreibt das Zeichen über der Schreibmarke.
\b entspricht BACKSPACE bzw. CTRL-H
\c echo gibt nur aus, was bis zu diesem Steuerzeichen eingegeben
wurde, und schließt die Ausgabe nicht mit einem Neue-Zeile-
Zeichen ab.
\f (f - form feed) Seitenvorschub; bei Ausgabe auf den Bild-
schirm wird dieses Steuerzeichen nicht umgesetzt.
echo schreibt das, was nach dem Steuerzeichen eingegeben
wurde, auf die nächste Seite, z. B. wenn die Ausgabe von echo
an den Drucker geschickt wird.
\f entspricht CTRL-L
\n (n - new line) Zeilenvorschub; echo schreibt das, was nach
dem Steuerzeichen eingegeben wurde, in die nächste Zeile.
\n entspricht RETURN bzw. CTRL-J
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
echo(1) echo(1)
\r (r - carriage return) Wagenrücklauf; echo setzt die Schreib-
marke auf Spalte 1 der aktuellen Zeile. Die Zeichen, die nach
dem Steuerzeichen eingegeben wurden, überschreiben die Zei-
chen, die echo auf den entsprechenden Spalten bereits ausge-
geben hat.
\r entspricht CTRL-M
\t Steuerzeichen für Tabulator; echo setzt die Schreibmarke auf
den nächsten Tabulator. Die Zeichen, die nach \t eingegeben
wurden, schreibt echo ab dieser Spalte weiter.
Die Tabulator-Positionen sind abhängig von dem verwendeten
Terminal. Für ein Siemens-Nixdorf-Terminal 97801 sind Tabula-
toren auf folgende Spalten gesetzt:
1 9 17 25 33 41 49 57 65 73 79
\t entspricht TAB bzw. CTRL-I
\v Steuerzeichen für Vertikal-Tabulator; echo setzt die Schreib-
marke auf den nächsten Vertikal-Tabulator. Normalerweise sind
Vertikal-Tabulatoren nicht eingestellt (geräteabhängig).
\v entspricht CTRL-K
\\ Gibt einen Gegenschrägstrich (\) aus.
\0n n muß eine ein-, zwei- oder dreistellige Oktalzahl sein. Das
Kommando echo gibt das entsprechende Zeichen aus [siehe
ascii(5) und meta-ascii(5)]. Auf diese Weise können Sie bei-
spielsweise Zeichen erzeugen, deren interner Code einen Wert
größer 7f (hexadezimal) hat, auch wenn Sie kein 8-Bit-Termi-
nal haben.
Für nicht darstellbare Zeichen wird ein Schmierzeichen ausge-
geben (geräteabhängig).
Vorsicht:
Wenn Sie nach einem oktal beschriebenen Zeichen eine Ziffer
ausgeben wollen, dann müssen Sie die Oktalzahl dreistellig
angeben.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
echo(1) echo(1)
Beispiel:
_______________________________________________
| Kommando | Ergebnis |
|________________________|_____________________|
| | 0adf (hex) |
| echo '\0337' | od -xc |_____________________|
| | 337 \n (ascii) |
|________________________|_____________________|
| | 371b 000a (hex) |
| echo '\00337' | od -xc |_____________________|
| | 033 7 \n (ascii) |
|________________________|_____________________|
Sollen diese Steuerzeichen weder von der Shell noch von echo interpre-
tiert werden, müssen Sie sie wie folgt eingeben:
_________________________________
| Eingabe | Ausgabe |
|_________|______________________|
| \\ | das Zeichen \ |
|_________|______________________|
| \\\\b | die Zeichenkette \b |
|_________|______________________|
| '\\b' | die Zeichenkette \b |
|_________|______________________|
| "\\\b" | die Zeichenkette \b |
|_________|______________________|
Für die übrigen Zeichenketten gilt dies entsprechend.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
BEISPIELE
Beispiel 1
Der folgende Bildschirm-Dialog soll zeigen, wann Leerzeichen, Tabula-
torzeichen und Neue-Zeile-Zeichen erhalten bleiben:
$ echo Heute ist Montag.
Heute ist Montag.
Hier erhält echo drei Argumente und gibt sie aus, jeweils getrennt
durch ein Leerzeichen.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
echo(1) echo(1)
$ echo "Heute ist Montag."
Heute ist Montag.
Zwischen den Anführungszeichen bleiben alle eingegebenen Leerzeichen
erhalten.
$ echo `ls p*`
pers pp ppp probe punkt pwd pwddr
$ echo "`ls p*`"
pers
pp
ppp
probe
punkt
pwd
pwddr
Ohne Anführungszeichen entfernt die Shell alle Argument-Trenner bis
auf ein Leerzeichen aus der Ausgabe des Kommandos ls und übergibt sie
an echo.
Die Anführungszeichen sorgen dafür, daß alle Leer-, Tabulator- und
Neue-Zeile-Zeichen erhalten bleiben.
Beispiel 2
Die Benutzerin anna will wissen, welcher Wert der Variablen HOME zuge-
wiesen ist:
$ echo $HOME
/home/anna
Beispiel 3
Die folgende Zeile in einer Shell-Prozedur bewirkt, daß auf die Stan-
dardfehlerausgabe eine Fehlermeldung ausgegeben wird:
echo Die Datei $1 ist nicht vorhanden >&2
Beispiel 4
Die folgende Zeile in einer Shell-Prozedur bewirkt, daß vor der Feh-
lermeldung ein akustisches Signal ertönt:
echo \\07Die Datei $1 ist nicht vorhanden >&2
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
echo(1) echo(1)
Beispiel 5
Vor die Ausgabe des Kommandos date soll eine konstante Zeichenkette
gestellt werden:
$ echo "Heutiges Datum mit Uhrzeit: \\c"; date
Heutiges Datum mit Uhrzeit: Wed Mar 8 17:22:05 MDT 1989
Das Steuerzeichen \c bewirkt, daß echo kein Neue-Zeile-Zeichen aus-
gibt. Trotz der Anführungszeichen muß der Gegenschrägstrich entwertet
werden.
HINWEISE
echo existiert sowohl als externes Kommando (/usr/bin/echo) als auch
als eingebautes Shell-Kommando (Built-in), und zwar sowohl der Korn-
Shell ksh(1) wie auch der Bourne-Shell sh(1). Für die Ausführung von
/usr/bin/echo erzeugt die Shell einen neuen Prozeß.
Bei der Verwendung von echo können sich Abweichungen im Verhalten
ergeben, je nachdem, welche Shell benutzt wird. Die möglichen Abwei-
chungen sind nicht eigens beschrieben.
Das externe Kommando /usr/bin/echo kennt die Option -n, mit der ein
Zeilenvorschub bei der Ausgabe unterdrückt wird [ähnlich wie das BSD-
Kommando /usr/ucb/echo, siehe echo(1-ucb)].
SIEHE AUCH
csh(1), ksh(1), sh(1), ascii(5), meta-ascii(5).
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98