Kurs: Shell-Programmierung

Dauer: 3 Tage

Motivation: Die Shell ist DAS Werkzeug unter Linux/UNIX zum Arbeiten mit dem System. Neben der interaktiven Verwendung werden viele Aufgaben mit ihrer Hilfe automatisiert. Sie ist sozusagen der "Kleber", der die vielen Werkzeuge eines Linux/UNIX-Systems zu einer Einheit zusammenfügt.

Ziel: Sie sind nach dem Kurs in der Lage, viele Ihrer Tätigkeiten auf einem Linux/UNIX-System mit Hilfe von Shell-Skripten zu automatisieren und eigene Linux/UNIX-Werkzeuge für wiederkehrende Aufgabenstellungen zu programmieren. Vor allem die syntaktischen Besonderheiten und die damit einhergehenden "Fallen" der Shell-Programmiersprache werden intensiv besprochen.

Im Verlaufe des Kurses werden Sie viele nützliche Übungs-Shell-Skripte erstellen sowie ein großes durchgängiges Beispiel-Skript für eine Menüsystem bzw. eine Adreßverwaltung schrittweise aufbauen.

Hinweis: Der Kurs ist für jedes Linux/UNIX-System geeignet, besprochen wird die "Bourne-Shell" und ihre Erweiterung "Bash".

Inhalt:

  • Wiederholung Linux/UNIX-Einführungs- und Aufbaukurs
  • Einführung
    • Skript-Aufbau und -Aufruf
    • Kommentare
    • Exit-Status
    • Fehlerkanal
    • Fehlersuche
  • Wichtige Kommandos
    • clear
    • echo
    • sleep
    • Kommando-Substitution (`…` $(…))
    • expr
  • Variablen und Parameter
    • Shell-Variablen
    • Umgebungs-Variablen
    • Vordefinierte Variablen
    • Benutzer-Eingabe (read dd)
    • Skript-Parameter ($* $@ $1… shift)
  • Kontrollstrukturen zur Ablaufsteuerung
    • Vergleiche (test)
    • Verzweigungen (if case)
    • Schleifen (for while until)
    • Vorzeitiger Abbruch (break continue exit)
  • Häufige Fehler und Tipps
  • Funktionen (zur Strukturierung von Skripten)
    • Definition und Aufruf
    • Rücksprung (return)
    • Parameter-Übergabe
    • Werte-Rückgabe
    • Source-Operator (. source)
  • Kommando-Kombination
    • Kommando-Listen (&& ||)
    • Kommando-Trenner (& ; NEWLINE)
    • Kommando-Gruppierung ((…) {…})
    • Line continuation (\)
  • Signalbehandlung (trap)
  • Hintergrund/Kind-Prozesse (& wait)
  • Anhang I (Skript-Aufruf, Usage-Meldung, Leere Anweisung, basename/dirname,

    mktemp, exec, eval, getopts, Bedingte Variablen, Spezialvariablen, Temporäre Variablen)

  • Anhang II (Shell-Optionen, Here-Dokument, select, tput, xargs, time,

    seq/jot/for((…)), uname, (k/X)dialog, Rekursion)

  • Anhang III (expr, read, test, Arrays, declare, ((…)), [[…]], printf)

Schulungsunterlagen:

  • Skript
  • Lösungsblätter zu allen Übungen
  • Zusammenfassung der wichtigsten Linux/UNIX-Befehle
  • Zusammenfassung der wichtigsten Vi-Befehle
  • Ausführliche Linux/UNIX-Befehlsübersicht

Voraussetzungen:

  • Muss: Allg. Computer-Kenntnisse (Tastatur, Maus, Grafische Oberfläche, Editor)
  • Muss: Linux/UNIX-Einführungs-Kurs (Shell-Ebene mit Kommando-Zeile)
  • Muss: Arbeiten auf der Kommandozeile (analog MS-DOS)
  • Muss: Kenntnis des Linux/UNIX-Standard-Editors vi
  • Muss: Kenntnisse in einer beliebigen Programmiersprache
  • Optional: Linux/UNIX-Aufbau-Kurs

Abgrenzung:

  • Keine Installation
  • Keine Systemadministration
  • Keine grafische Oberfläche (KDE oder GNOME)
  • Kein Netzwerk
  • Keine root-Rechte notwendig
  • Die "C-Shell" und "TC-Shell" wird nicht besprochen