Shellskripte für Anfänger

Ein Skript ist eine Datei mit Kommandos fuer ein Programm. Ist das ausführende Programm eine Shell, so spricht man von einem Shellskript. Normalerweise führt das Programm das Skript zeilenweise aus. Die Reihenfolge kann durch Sprünge und Schleifen geändert werden.

Skripte erstellt man zumeist mit (Text) Editoren; am gebräuchlichsten sind emacs und vim - oder eine der vielen Klone dieser Editoren.

Weitere Editoren: EMACS Klone: Xemacs, jed, joe, jove; VI Klone: calvin, nvi, stevie, vile, vim. Ausserdem populaere Editoren: bingo, crisp, ee, easyedit, fte, kate, kedit, kile, kwrite, lyx, mcedit, medit, mined, nano, nedit, pico, qedit, slim, textpad, the, tse, vde, wily. (Vielleicht muss das mal auf eine eigene Seite...)

Das Skript

Zuerst die Datei mit einem Editor erstellen, z.B. "pico":

pico mein_script

Die erste Zeile muss so aussehen: #!/bin/sh

Die Kombination #! startet das danach angegebene Kommando, hier also die Shell /bin/sh, welche auf Linux zumeist auf die Bash verlinkt ist.

Statt dessen ließe sich z.B. auch #!/usr/bin/perl einfügen, um Perl das Skript ausführen zu lassen. Aber dann wäre es ein ein Perl Skript und müßte auch in dieser Sprache geschrieben sein.

Als nächstes folgen Kommandos - jeweils ein Kommando pro Zeile, oder mehrere in derselben Zeile, jeweils voneinander getrennt mit einem Semikolon (;).

Man kann alle internen Kommandos der Shell verwenden, aber auch externe Kommandos, die im $PATH der Shell gefunden werden koennen und ausführbar sind.

Beispiel

Ein sehr simples Skript wäre z.B.:

# mein erstes Skript, version 1.0 (dies ist ein Kommentar)
echo "Hello World!"
exit

Abschließend die Datei speichern, den Editor beenden, und, wichtig /!\ : die Datei ausführbar machen:

chmod +x mein_script

Danach kann man es starten mit ./mein_script.

chmod setzt das execute bit, das eine Datei für alle (Besitzer, Gruppe und "Welt") ausführbar macht.

Temporäre Dateien richtig behandeln

Die falsche Verwendung von temporären Dateien führt häufig zu Sicherheitslöchern (Race_Condition). Hier steht wie es richtig geht.

Tipps

Obwohl die Dateierweiterung unter Unix egal ist, stellen viele Editoren den Inhalt entsprechend aufbereitet dar (Textfarben, Einrückungen), wenn eine den Konventionen entsprechende Extension verwendet wird.

Daher sollte man Skripte mit einer entsprechenden Endung versehen, zB Shellskripte mit ".sh" und Perl-Skripte mit ".pl". Das erleichtert das Arbeiten mit dem Editor der Wahl. Mittlerweile erkennen mehrere Editoren den Dateityp am Inhalt anstatt an der Endung.

Man kann jedes beliebige Skript auch ohne "Execute Bit" einfach ausführen, wenn es als Argument an die Shell übergeben wird: sh ./mein_script

Es ist empfohlen das entsprechende Manual der Kommandos durchzulesen, zB mit man chmod bzw man bash.

Dort findet man alles, was die entsprechende Shell so kann (Funktionen, if/else-Abfragen, Schleifen usw.). Für viele Kommandos gibt es auch deutschsprachige Manuals (siehe DeutscheMeldungen).

ShellScript (zuletzt geändert am 2010-02-12 11:59:16 durch svenguckes)