»Werke dauern lange, so lange, wie sie uns beschäftigen.\\Je länger sie dauern, umso reicher können sie werden.\\Was fertig ist, was niemanden mehr berührt, ist am Ende.«
– Günter Behnisch
11 Shellskriptprogrammierung mit der bash
Nun kommen wir endlich zum Thema der Shellskriptprogrammierung. Dieses Kapitel befasst sich mit der Programmierung in der Bourne- sowie in der Bourne- Again-Shell (bash). Erst jetzt verfügen Sie über das nötige Grundwissen, um richtig in die Shellskriptprogrammierung einzusteigen. Natürlich gibt es über dieses Thema dicke Bücher, aber das Wichtigste lernen Sie auch aus diesem Kapitel.
Auch in der Shell können Sie Schleifen anwenden und mit Variablen (die Sie bereits kennengelernt haben) und Arrays arbeiten. Doch das Wichtigste ist: Sie haben Zugriff auf alle Programme des Systems und können diese in Ihre Shellskripts einbauen und miteinander agieren lassen.
Anwendung
Shellskripts werden primär von Installationsroutinen und zur automatisierten Administration, etwa einem Systembackup, eingesetzt. Der Administrator, der für seine Aufgabe, die von Hand erledigt jedes Mal eine Stunde dauert, ein Shellskript schreibt, kann sich in Zukunft zurücklehnen und einen Kaffee trinken, während sein Shellskript die Arbeit erledigt. Daher gilt besonders für Administratoren:
Schreiben Sie für alle oft anfallenden Tätigkeiten ein Shellskript, um sich Zeit und Arbeit zu sparen. |
Solche Shellskripts kann man in ein Verzeichnis wie etwa /root/scripts packen und den Zugriff darauf komfortabel gestalten, indem man der PATH-Variable den Eintrag des Verzeichnisses hinzufügt:
$ export PATH=$PATH:/root/scripts
Listing 11.1 PATH erweitern
Definition
Doch bevor wir in die Shellskriptprogrammierung einsteigen, sei zunächst erst einmal gesagt, was Shellskriptprogrammierung überhaupt ist. Um in der Shell zu programmieren, bedarf es keiner Skriptdatei. Sie können die Befehle direkt in die Shell eingeben. Diese Direkteingabe ist allerdings unübersichtlich und nicht permanent abrufbar. Daher sichert man eine Reihe von Shellbefehlen einfach in einer Datei, dem sogenannten Shellskript ab.
Dieses Shellskript enthält dann alle möglichen Definitionen und Anwendungen der gewünschten Befehle, Funktionen, Schleifen, Variablen usw., die es für seine Aufgabe benötigt.
11.1 Das erste Shellskript 

Schreiben wir also ein erstes Shellskript. Legen Sie dazu mit dem Editor Ihrer Wahl eine Datei an (oder mit cat), und schreiben Sie ein paar Befehle in diese hinein. Verwendet man cat, kann man den folgenden Befehl verwenden, der die eingegebenen Zeilen in die Datei shellskript.sh schreibt. [Die Dateiendung .sh ist für Shellskripte zwar üblich, aber nicht notwendig.] Die Eingabe wird durch eine Zeile beendet, in der nur die Zeichen »EOF« stehen.
$ cd /tmp $ cat >shellskript.sh «EOF > #!/bin/sh > > echo "Mein erstes Shellskript!" > EOF $
Listing 11.2 Ein Shellskript anlegen
Wie Sie sehen, besteht dieses Shellskript nur aus zwei Zeilen. In der ersten Zeile eines Shellskripts stehen immer zunächst die zwei Zeichen »#!«. Dadurch weiß das System beim Ausführen der Datei, dass es sich um eine Skriptdatei handelt, die von einem entsprechenden Interpreter (etwa awk, der C-Shell, der Bourne-Shell oder perl) ausgeführt werden muss. Der Pfad zur Programmdatei des Interpreters folgt unmittelbar auf diese zwei Zeichen. Wir geben hier die Bourne-Shell (/bin/sh) an. Die restlichen Zeilen des Skripts werden also von dieser Shell ausgeführt. Die zweite Zeile beinhaltet den echo-Befehl, der einfach einen Text auf dem Bildschirm ausgibt.
$ cat shellskript.sh #!/bin/sh echo "Mein erstes Shellskript!"
Listing 11.3 Das Shellskript
Damit dieses Shellskript nun gestartet werden kann, muss die Datei auch das entsprechende Zugriffsrecht erhalten, was sich durch chmod bewerkstelligen lässt:
$ chmod +x shellskript.sh
Listing 11.4 Das Shellskript ausführbar machen
Nun, da das Shellskript ausführbar ist, kann es gestartet werden und damit den einzigen darin enthaltenen Befehl ausführen.
$ ./shellskript.sh Mein erstes Shellskript!
Listing 11.5 Das Shellskript starten