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
7 Shellskriptprogrammierung
Nun kommen wir endlich Thema der Shellskriptprogrammierung. Dieses Kapitel befasst sich genauer gesagt mit der Programmierung in der Bourne- sowie der Bourne-Again-Shell (bash). Erst jetzt verfügen Sie über das nötige Grundwissen, um richtig in die Shellskriptprogrammierung einsteigen zu können. Natürlich gibt es auch über dieses Thema dicke Bücher, aber das Wichtigste lernen Sie auch aus diesem Kapitel.
Auch in der Shell lassen sich Schleifen anwenden und kann mit Variablen (die Sie bereits kennengelernt haben) und Arrays gearbeitet werden. 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 Systemadministration, 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. Von daher gilt besonders für Administratoren:
Schreiben Sie sich für alle oft anfallenden Tätigkeiten ein Shellskript, um 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 7.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 Skript-Datei. 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 Shell-Befehlen 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.
7.1 Das erste Shellskript
Schreiben wir also ein erstes Shellskript. Dazu legt man mit dem Editor seiner Wahl eine Datei an (oder benutzt cat) und schreibt in diese ein paar Befehle hinein. Verwendet man cat, kann man den folgenden Befehl verwenden, der die eingegebenen Zeilen in die Datei shellskript schreibt. Die Eingabe wird durch eine Zeilebeendet, in der nur die Zeichen »EOF« stehen.
$ cd /tmp $ cat >shellskript.sh <<EOF > #!/bin/sh > > echo "Mein erstes Shellskript!" > EOF $
Listing 7.2 Ein Shellskript anlegen
Wie Sie sehen, besteht dieses Shellskript zunächst einmal 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 #!/bin/sh echo "Mein erstes Shellskript!"
Listing 7.3 Das Shellskript
Damit dieses Shellskript nun gestartet werden kann, muss die Datei auch das entsprechende Zugriffsrecht bekommen, was sich durch chmod bewerkstelligen lässt:
$ chmod +x shellskript
Listing 7.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 Mein erstes Shellskript!
Listing 7.5 Das Shellskript starten