Shell-Skripte selbst schreiben (Teil 2)

© Liu Liming, 123RF

Verschlungene Pfade

Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

Im ersten Teil des Workshops in der vorigen Ausgabe [1] haben Sie bereits etliche Konstrukte kennengelernt, mit denen Sie einfache Tests und Zuweisungen vornehmen. In diesem Teil lernen Sie, wie Sie entsprechend bestimmten Bedingungen im Shell-Code verzweigen.

Wenn, dann

Das If-Konstrukt kommt zum Einsatz, um etwa den Erfolg respektive Misserfolg eines Befehls oder die Beschaffenheit von Dateien, Verzeichnissen und Variablen auszuwerten und Folgerungen daraus zu ziehen. Eine einfache Variante besteht aus dem einleitenden if, der Folgerung then und dem abschließenden Statement fi.

Bei Bedarf erweitern Sie das Konstrukt um weitere Verzweigungen mit elif [Bedingung]; then. Mit else rufen Sie eine Anweisung auf, die greift, wenn zuvor alle Bedingungen nicht greifen. In diesem Fall entfällt allerdings das abschließende then. Das ermöglicht ein Verschachteln und damit das Entwerfen komplexerer Verzweigungen (Listing 1).

Listing 1

 

if [ Bedingung1 ]; thenAnweisung1
elif [ Bedingung2 ]; thenAnweisung2
elif [ Bedingung3 ]; then
  if [ Bedingung3A ]; thenAnweisung3A
  fi
[...]
elseAnweisung4
fi

Beim Skript aus Listing 2 finden Sie in der dritten Zeile eine Befehlsfolge, die prüft, ob das Verzeichnis versuch existiert. Fehlt das Verzeichnis, legt das Skript es an. Die dazu verwendete Befehlsverkettung ist zwar kompakt, aber auch gleichermaßen kryptisch. Eleganter und wesentlich verständlicher fällt das Ganze mithilfe eines If-Konstrukts aus (Listing 3).

Listing 2

 

#!/bin/bash
# Prüfen:                      Anlegen:
ls versuch > /dev/null 2>&1 || mkdir versuch

Listing 3

 

#!/bin/sh
if [ ! -d versuch ]; then
  mkdir versuch;
fi

Mehrfach verzweigen

Mit dem Case-Befehl lösen Sie übersichtlich die Aufgabe, mehrere unterschiedliche Werte je einer Aktion zuzuweisen. Damit programmieren Sie etwa ein Menü, das Eingaben mit unterschiedlichen Zeichen ermöglicht. Sie leiten das Konstrukt mit dem Schlüsselwort case ein; mittels der Umkehrung esac beenden Sie es wieder. Listing 4 zeigt die grundsätzliche Form der mehrfachen Verzweigung.

Listing 4

 

case "$VARIABLE" inWerte1)AnweisungAnweisung
    ;;Werte2)Anweisung
    ;;
  *)Fallback-Anweisung ;;
esac

Die einzelnen Werte trennen Sie mit dem Pipe-Zeichen | ab. In der Praxis könnte der Code für das Abfragen einer Bestätigung beim Benutzer wie folgt aussehen:

[jJ]|[yY]|Z|Ja|ja)
  echo "Zugestimmt" ;;

Dabei dürfen Sie sowohl sogenannte Wildcards verwenden als auch ganze Wörter einsetzen. Bei der letzten Alternative in der Kette setzen Sie die Joker-Zeichen ? und * ein. Das entspricht dann vom Prinzip her der Else-Klausel des If-Konstrukts.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.