»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 Skript 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 Shellskripte kann man in ein Verzeichnis wie etwa /root/scripts packen und den Zugriff darauf komfortabel gestalten, indem man der PATH-Variable einen Eintrag für das Verzeichnis hinzufügt:
Listing 11.1 PATH erweitern
$ export PATH=$PATH:/root/scripts
Definition
Doch bevor wir in 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 am Prompt eingeben. Diese Direkteingabe ist allerdings unübersichtlich und nicht permanent abrufbar. Daher speichert man eine Reihe von Shellbefehlen einfach in einer Datei, dem so genannten Shellskript, ab.
Dieses Shellskript enthält dann die Definitionen und Aufrufe 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 (oder mit cat) eine Datei an, und schreiben Sie ein paar Befehle in diese hinein. Nutzt man cat, kann man den folgenden Befehl verwenden, der die eingegebenen Zeilen in die Datei shellskript.sh schreibt. [Fn. 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.
Listing 11.2 Ein Shellskript anlegen
$ cd /tmp
$ cat >shellskript.sh <<EOF
> #!/bin/sh
>
> echo "Mein erstes Shellskript!"
> EOF
$
Wie Sie sehen, besteht dieses Skript 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.
Listing 11.3 Das Shellskript
$ cat shellskript.sh
#!/bin/sh
echo "Mein erstes Shellskript!"
Damit dieses Skript nun gestartet werden kann, muss die Datei auch das entsprechende Ausführungsrecht erhalten, was sich mit chmod bewerkstelligen lässt:
Listing 11.4 Das Shellskript ausführbar machen
$ chmod +x shellskript.sh
Nun, da das Shellskript ausführbar ist, kann es gestartet werden und damit den einzigen darin enthaltenen Befehl ausführen.
Listing 11.5 Das Shellskript starten
$ ./shellskript.sh
Mein erstes Shellskript!
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.