AA_123rf-13453701_NataliaKlenova_123RF.jpg

© Natalia Klenova, 123RF

Die richtigen Zutaten

Bash-Skripte leserlich programmieren

20.02.2014
Das geniale Skript aus dem letzten Monat enthält nur konfusen Spaghetti-Code, der nicht mehr verrät, was er tut? Mit unseren Tipps aus erprobten Styleguides sorgen Sie für Ordnung und Lesbarkeit.

Bash-Skripte helfen dabei, Dateien umzubenennen, eine große Adressliste zu sortieren oder ähnliche lästige Aufgaben zu erledigen. Die dabei meist unter hohem Zeitdruck geschriebenen Skripte sehen häufig abenteuerlich aus (Listing 1). Schnelle Hacks erfüllen zwar ihren Zweck, sind aber oft unübersichtlich, und die Funktionsweise ist meist eine Woche später komplett unklar. Aus diesem Grund geben viele Anwender die berühmten Einzeiler nicht weiter: Die Empfänger müssten sich erst langwierig einlesen. Schlussendlich ist ein solches kryptisches Skript nur schwer zu erweitern oder zu ändern.

Listing 1

#!/bin/sh
a="100"; b="3"; c="."; d="shot"; for i in `seq 1 $a`; do import -window root $c/$d$i.png; sleep $b; done; exit

Regulator

Aus diesen Gründen sollten Sie Bash-Skripte von Anfang an strukturieren, formatieren und vor allem kommentieren. Dabei helfen Richtlinien, wie sie erfahrene Programmierer in sogenannten Styleguides festgehalten haben. Zwei bekannte Leitfäden stammen von Google [1] und der Fachhochschule Südwestfalen [2]. Ob Sie lieber der privatwirtschaftlichen Anleitung (Abbildung 1) folgen oder der akademischen (Abbildung 2), das bleibt ganz Ihrem Geschmack überlassen; die grundlegenden Richtlinien sind überall gleich.

Abbildung 1: Detaillierte Informationen zu den einzelnen Richtlinien erhalten Sie bei Google, wenn Sie das Dreieck vor einer der Regeln anklicken.
Abbildung 2: Der Styleguide der FH Südwestfalen liegt als PDF vor – und geht nicht nur auf die Formatierung ein.

So sollte Ihr Skript zu Beginn immer die passende Shell nennen. Nutzt es etwa die Funktionen der Bash, schreiben Sie #!/bin/bash in die erste Zeile. Damit funktioniert das Skript auch auf Systemen, die die Bash nicht als Standard-Shell einsetzen, diese aber trotzdem installiert haben.

Frischluftzufuhr

Um das Skript übersichtlicher und leserlicher zu gestalten, sollten Sie den Code immer mit Einrückungen und Leerzeilen versehen. Das schlecht lesbare Listing 1 verwandelt sich auf diese Weise in das schon nicht mehr ganz so kryptische Listing 2.

Listing 2

#!/bin/bash
a="100"
b="3"
c="."
d="shot"
for i in `seq 1 $a`
do
  import -window root $c/$d$i.png;
  sleep $b
done;
exit

Jede Zeile nimmt dabei eine Anweisung auf, eine Leerzeile trennt zusammengehörende Teile des Codes. Letzteres trifft in Listing 2 etwa auf die For-Schleife zu. Die Anweisungen innerhalb eines solchen Blocks sollten Sie jeweils um eine Stufe nach rechts einrücken. Nutzen Sie dazu immer Leerzeichen und keine Tabulatoren: Letztere interpretieren Editoren unterschiedlich. Beinahe unisono empfehlen die Styleguides, jeden Tabulator durch zwei Leerzeichen zu ersetzen.

In Listing 2 steht das do in einer eigenen Zeile. Google empfiehlt, es noch in die Zeile mit dem for zu ziehen. Analoges gilt für eine While-Schleife sowie das then bei einem If-Block. Das else steht jedoch vorzugsweise wieder in einer eigenen Zeile, genauso wie das abschließende done. Apropos If-Anweisung: Google rät, anstelle von test und für dessen Abkürzung mit eckigen Klammern die doppelten Klammern zu verwenden:

if [[ ${dateiname} == "bild*" ]]; then ...

Diese Notation hat den Vorteil, dass sie reguläre Ausdrücke verarbeitet. Zudem reduziert sie Fehler, da die doppelten Klammern weder eigenmächtig Wörter abschneiden noch Dateinamen erweitern.

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

  • Einführung in die Bash-Programmierung
    Skripte sollen meist wiederkehrende oder lästige Arbeiten automatisieren. Die Standard-Shell Bash stellt Ihnen dazu eine ganze Reige von Funktionen bereit. Dieser Artikel erklärt, wie Sie ihre eigenen Shell-Skripte schreiben.
  • Ohne Crash durch die Bash
    Mit der Bourne-Again-Shell schreiben Linux-Anwender Skripte, die nervige und stupide Aufgaben automatisieren – etwa um auf dem Notebook Strom einzusparen.
  • Bash-Skripte prüfen lassen
  • Doppeltes Lottchen
    Batsh schlägt zwei Fliegen mit einer Klappe: In dieser Sprache geschriebene Programme lassen sich sowohl in Bash-Skripte als auch in die unter Windows genutzten Batch-Dateien übersetzen.
  • Mit SHC Bash-Skripte kompilieren
    Der Shell Script Compiler wandelt Skripte in Binärprogramme um. Das schützt vor unbeabsichtigten Veränderungen, birgt aber auch einige Tücken.
Kommentare

Infos zur Publikation

LU 02/2016: Alt-PCs flott machen

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

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Der Tipp der Woche

Schon gewußt?

14.11.2015

Auch unter Ubuntu 15.10 kann man wieder mit dem Startmedienersteller (alias Startup Disk Creator) ein Live-System auf einem USB-Stick einrichten. ...

Fehler des Startmedienerstellers von Ubuntu 15.10 umgehen

Aktuelle Fragen

Tails Update
Val Lerie, 11.01.2016 10:51, 0 Antworten
Hallo zusammen, updaten > update Speichern unter > Persistent nicht möglich, mit der Meldung;...
Recoll
Jürgen Heck, 20.12.2015 18:13, 4 Antworten
Wie kann man mit Recoll nach bestimmten Zeichen/Satzzeichen bzw. Zeichenkombinationen suchen, z....
Wings Platinum 4 auf Linux?
Bodo Steguweit, 18.12.2015 11:37, 4 Antworten
Hallo in die Runde ich nutze für meine Diashows Wings Platinum 4 als Diareferent. Arbeite jetzt...
Bandbreite regulieren
Georg Armani, 25.11.2015 16:50, 1 Antworten
Hallo, ich bin ein Neuling in Sachen Linux und hoffe auf Hilfe. Ich habe zwei Windows Rechner...
Windows 10 verhindert LINUX
Hans Wendel, 17.11.2015 17:47, 7 Antworten
Hallo alle, mit einem W10-Laptop (vorher war Win7) wollte ich LINUX ausprobieren. Alles, was ni...