AA_railway_liu-liming_123rf_38870371.jpg

© Liu Liming, 123RF

Shell-Skripte selbst schreiben (Teil 2)

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.)

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • Kreislauf
    Schleifen ermöglichen das mehrmalige Abarbeiten von Anweisungen. Dabei kann das begrenzende Ereignis sowohl außerhalb als auch innerhalb der Schleife liegen.
  • Klar signalisiert
    Statt Prozesse einfach abzuschießen, fangen Profis deren Kommunikation geschickt ab und lenken mit den passenden Signalen die Arbeit des Rechners gekonnt in die gewünschte Richtung.
  • Mehr Komfort
    Von einfachen Abfragen bis hin zu komplexen Menüs: Mit dem Toolkit Dialog bauen Sie eine grafische Oberfläche für Shell-Skripte, die oft nicht mehr als eine zusätzliche Zeile brauchen.
  • Bash-Skripte sind Programme
    Wer regelmäßig mit der Shell arbeitet, wird leicht zum Programmierer: Schreiben Sie mehrere Shell-Befehle in eine Textdatei und machen diese ausführbar, haben Sie schon Ihr erstes Shell-Skript entwickelt. Die Shell bietet als Programmiersprache aber noch viel mehr.
  • Teil 5: Kontrollstrukturen die Zweite
    Nach der Einführung in die Kontrollstrukturen und Vorstellung von einfachen Vergleichsmöglichkeiten im letzten Teil beschäftigen wir uns diesmal mit Reihenvergleichen, Schleifen, Tastatureingaben und kleinen Auswahlmenüs.
Kommentare

Infos zur Publikation

LU 03/2017: EFFIZIENTES BÜRO

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Shell-Befehl zur Installation von Scanner-Treiber
Achim Zerrer, 15.02.2017 12:13, 8 Antworten
Hallo, ich habe Einen Brother Drucker mit Scanner. Nachdem ich mit Hilfe der Community den Druck...
kiwix öffnet ZIM Datei nicht
Adrian Meyer, 13.02.2017 18:23, 1 Antworten
Hi, ich nutze Zim Desktop für mein privates Wiki. Fürs Handy habe ich mir kiwix heruntergelade...
registration
Brain Stuff, 10.02.2017 16:39, 1 Antworten
Hallo, Das Capatcha auf der Registrierungsseite von linux-community ist derartig schlecht gema...
Hilfe ich verstehe das AWK Programm nicht
Alex Krug, 09.02.2017 10:04, 3 Antworten
Hallo Liebe Linux Community, im zuge meiner Arbeit bin ich auf dieses AWK Programm gekommen....
Problem beim Upgrad auf Opensuse Leap 42.2
Klaus Sigerist, 09.02.2017 08:56, 6 Antworten
Hallo zusammen! Ich habe mein Opensuse 13.2 auf das neue Leap upgraden wollen. Nach dem Einlege...