Das Programmieren der Shell

> Betriebssystem Linux

> > # Datenein- und -ausgabe

> > ### 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):

> > \a | Klingelzeichen
> > \b | Backspace
> > \c | Unterdrückt alle folgenden Zeichen inclusive des Zeilentrenners
> > \f | FormFeed - Seitenvorschub
> > \n | Newline - Zeilentrenner mit Wagenrücklauf
> > \r | Return - Wagenrücklauf ohne Zeilentrenner
> > \v | Vertikaler Tab - Zeilentrenner ohne Wagenrücklauf
> > \t | Horizontaler Tabulatorschritt
> > \\ | Der Backslash selbst
> > \nnn | Das 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.

> > [ Kurs Hauptseite ] [ Linux-Kurse ] [ Startseite Linux-Praxis ]

> > © 1999, 2000, 2001 by F. Kalhammer