Linux-Workshop

Shell Scripting - Tipps und Tricks für Admins

Here-Dokument

Wie bereits angesprochen, liest jeder Befehl über stdin seine Eingaben. Damit dies automatisiert funktioniert, kann man mittels "echo .. | <cmd>" dem nachfolgenden Befehl die Eingaben liefern.

> bc

..

ibase=10

obase=16

10

A <= Ausgabe 0Ah

quit

Automatisiert:

> echo -e "ibase=10\nobase=16\n10\nquit\n" | bc

A

Im Script gibt es dafür eine elegantere Lösung und wir sprechen von einem Here-Dokument für diesen Aufbau. Die Shell liest alle Zeilen zwischen zwei Markern und sendet diese (bearbeitet) über stdin an den Befehl. So lassen sich auch komplexe Abläufe automatisieren.

myscript:

[..]

bc << _EOF_

obase=16

ibase=10

10

quit

_EOF_

[..]

> bash myscript

A

Recht neu ist die Form des "Here Strings", die "word" auf stdin an den Befehl weiterreicht:

> cmd<<<word