Eingabe mit read

Mit dem Befehl read bietet die Shell eine einfache aber in allen Fällen ausreichende Form der Dateneingabe. read ließt Wörter von der Standard-Eingabe und weist sie Variablen zu:

read [-p Prompt] [Varname ...]

Das erste gelesene Wort wird der ersten Variable zugewiesen, das zweite der zweiten usw. Falls mehr Worte gelesen werden, als Variablennamen angegeben wurden, so enthält die letzte Variable alle restlichen Wörter. Sind mehr Variablennamen angegeben worden, als Wörter gelesen wurden, so sind die überzähligen Variablen mit dem Leerstring gefüllt.

Mit der Option -p kann ein Satz auf dem Bildschirm ausgegeben werden, der ohne abschließenden Zeilentrenner ausgegeben wird, bevor Eingaben gelesen werden. Dieser Satz muß in Anführungszeichen stehen, wenn er Leerzeichen enthält, sonst würde alles nach dem ersten Wort schon als Variablennamen gewertet.

Also z.B.

read -p "Bitte geben Sie Vor und Zunamen ein: " VNAME ZNAME

Nachdem der Satz „Bitte geben Sie Vor und Zunamen ein: “ auf den Bildschirm geschrieben wurde, ließt der read-Befehl jetzt (hoffentlich) zwei Namen ein, der erste wird in der Variable VNAME gespeichert, der zweite in ZNAME.

Ausgabe mit echo

Mit dem Echo-Befehl lassen sich alle normalen Datenausgaben erledigen. Er sendet alle seine Argumente direkt auf die Standard-Ausgabe. Shellvariablen werden vor der Ausgabe aufgelöst. Die Ausgabe wird mit einem Zeilentrenner (Newline) abgeschlossen

echo [-neE] [...]

Wird der Parameter -n angegeben, so wird der abschließende Zeilentrenner unterdrückt. Der Parameter -e zwingt den echo-Befehl, die untenstehenden Sonderzeichen zu interpretieren, -E verbietet es grundsätzlich die Sonderzeichen zu interpretieren.

Die folgenden Sequenzen werden von echo unterstützt (wenn die -e Option gesetzt wurde):

\aKlingelzeichen
\bBackspace
\cUnterdrückt alle folgenden Zeichen inclusive des Zeilentrenners
\fFormFeed – Seitenvorschub
\nNewline – Zeilentrenner mit Wagenrücklauf
\rReturn – Wagenrücklauf ohne Zeilentrenner
\vVertikaler Tab – Zeilentrenner ohne Wagenrücklauf
\tHorizontaler Tabulatorschritt
\\Der Backslash selbst
\nnnDas ASCII-Zeichen, dessen Wert der oktalen Darstellung nnn entspricht (1-3 Ziffern)
\xnnn  Das ASCII-Zeichen, dessen Wert der hexadezimalen Darstellung nnn entspricht (1-3 Ziffern)

Achtung: Wenn diese Sequenzen benutzt werden sollen, so müssen sie entweder in Anführungsstriche gesetzt werden oder es muß ihnen ein doppelter Backslash vorstehen. Sonst würde die Shell etwa beim \a die Sonderbedeutung des a (hat keine) streichen und einfach ein a ausgeben. also entweder

echo -e Das ist ein "\a"Klingelzeichen

oder

echo -e Das ist ein \\aKlingelzeichen

Wer ganz sicher gehen will kann natürlich auch den gesamten auszugebenden String in Anführungszeichen setzen:

echo -e "Das ist ein \aKlingelzeichen"

Ausgabe mit printf

Für C-Freaks bietet Unix auch noch eien eigenen printf-Befehl von der Kommandozeile aus. Er funktioniert wie die C-Funktion und kann so auch wunderbar in Scripts verwendet werden um formatierte Ausgaben zu erhalten. Die Darstellung dieses Befehls würde den Rahmen hier aber deutlich sprengen, für C-Programmierer hier noch kurz die Syntax:

printf Formatstring Argumente

Die %-Felder im Formatstring werden genau wie bei C interpretiert.