AA_bagger_genmike_123rf_34331782.jpg

© Genmike, 123RF

Shell-Skripte selbst schreiben (Teil 1)

Solides Fundament

Der Einstieg in die Programmierung auf der Kommandozeile fällt erstaunlich leicht. Mit Shell-Skripten implementieren Sie einfache Abläufe ebenso elegant wie komplexe Strukturen.

Viele Einzelschritte, die Sie mühsam in der GUI durch viel Klicken erledigen, fassen Sie im optimalen Fall in einem Shell-Skript zusammen. Mit wenigen Zeilen Code sichern Sie so etwa zuverlässig Daten, durchsuchen große Textmengen nach Zitaten oder verwalten Adressen abseits der SQL-Welt.

Grundsätzliches

Shell-Skripte dürfen einen beliebigen Namen tragen. Gleicht dieser dem Namen von bestehenden Tools, entscheidet die Variable $PATH, welches zuerst greift. Das verwirrt unter Umständen. Um hier besser abzugrenzen, empfiehlt es sich, die Endung .sh zu verwenden.

Am einfachsten schreiben Sie Ihre Skripte mit einem Texteditor. Viele bieten dabei ein Syntax-Highlighting an, das die Orientierung im Code erleichtert. Zu beliebten Kandidaten zählen Vim und Nano auf der Konsole oder aber Gedit oder Kate in der grafischen Oberfläche. Mithilfe des Editors Ihrer Wahl erstellen Sie ein kleines Skript wie in Listing 1 und speichern es unter dem Namen 1.sh ab.

Listing 1

#! /bin/sh
echo "Test"

Beim Betrachten dieses Mini-Listings erkennen Sie, dass die erste Zeile nach dem sogenannten Shebang #! den Pfad zum Interpreter enthält. Das funktioniert auf fast jedem Unix-ähnlichen System, wie unter Linux und den Vertretern der BSD-Familie. Überwiegend kommt in der Praxis die Zeile #!/bin/sh zum Einsatz. Welche Shell aber tatsächlich das Ausführen des Skripts übernimmt, erfahren Sie, indem Sie mittels echo $SHELL die Standard-Shell abfragen.

Möchten Sie die Vorzüge eines bestimmten auf dem System installierten Interpreters nutzen, geben Sie den absoluten Pfad ein, wie etwa #!/usr/bin/zsh für die Z-Shell.

Sie haben verschiedene Möglichkeiten, um ein Skript zu starten (siehe Tabelle "Startmethoden"). Dabei kommt es in einigen Fällen darauf an, dass die Datei die korrekten Rechte zum Ausführen erhält. Diese vergeben Sie mit dem Kommando chmod im Terminal. Das erste Beispiel aus Listing 2 zeigt, wie Sie die Rechte nur für den Benutzer setzen, die zweite Zeile setzt diese für alle.

Startmethoden

Aufruf Recht notwendig Hinweis
./1.sh ja bei Aufruf im aktuellen Arbeitsverzeichnis
SKRIPT ja Skript liegt in einem Verzeichnis aus $PATH
/Pfad/1.sh ja Aufruf mit absolutem oder relativem Pfad
sh 1.sh nein bei Aufruf im aktuellen Verzeichnis
sh /Pfad/1.sh nein Aufruf mit absolutem oder relativem Pfad

Listing 2

$ chmod 700 1.sh
$ chmod 755 1.sh

Angenommen, ein Skript verfügt über die passenden Rechte, liegt im aktuellen Verzeichnis und Sie wollen es ausführen, dann greift ein spezieller Mechanismus: Der Aufruf verlangt ein vorangestelltes ./ vor dem Namen. Das verhindert Angriffe, bei denen im Verzeichnis ein bösartiges Skript liegt, das den Namen eines bekannten Shell-Kommandos trägt. Ist das Verzeichnis allerdings in der Variablen $PATH enthalten, brauchen Sie Punkt und Schrägstrich nicht voranzustellen.

Normalerweise gibt ein Shell-Skript nach dem Abarbeiten wie jedes andere Kommando einen Wert zurück. Diesen sogenannten Exit-Code legt der Interpreter in der Variablen $? ab. Im Erfolgsfall erhalten Sie den Wert 0; tritt ein Fehler auf, lautet der Exit-Code 1. Für bestimmte Zwecke lohnt es sich aber, andere numerische Werte zu verwenden. Dazu setzen Sie ein exit Wert ans Ende des Skripts beziehungsweise an die Stelle, an der Sie es abbrechen.

Variablen belegen und leeren

Sie sehen in Beispielen zur Dateneingabe immer wieder den Echo-Befehl, um das Ergebnis zu prüfen. Dabei kommt das Kommando oft in einer einfachen Form zum Einsatz. Es hilft unter anderem dabei, den Wert von Variablen zu ermitteln.

Diese belegen Sie innerhalb eines Skripts in derselben Form wie direkt in der Shell – durch Zuweisen mit dem Gleichheitszeichen (Listing 3, Zeile 1 oder Zeile 2). Möchten Sie die Ausgabe einer Sub-Shell (also quasi eines externen Kommandos) in einer Variablen ablegen, nutzen Sie die Notation aus Zeile 3. Die Variante aus Zeile 4 mit den sogenannten Backticks funktioniert zwar auch (noch), gilt aber als veraltet.

Listing 3

A=1
B="a bc"
C=$(Sub-Shell)
D=`Sub-Shell`

Der Einsatz einer Sub-Shell zum Belegen einer Variablen findet sich in der Literatur oft als "Kommandosubstitution". Sie kommt etwa in For-Schleifen zum Einsatz. Die Variablensubstitution wertet dagegen den Inhalt einer Variablen aus und reagiert entsprechend. In der Tabelle "Variablensubstitution" finden Sie einige wichtige Möglichkeiten.

Variablensubstitution

Eingabe Aktion
${Variable1:=$Variable2} Standardwert zuweisen, falls Variable leer
${Variable1:=$(Befehl)} Resultat von Befehl zuweisen, falls Variable leer
${Variable1:+$Variable2} Wenn Variable1 nicht leer ist, mit Variable2 überschreiben

Die Eingabe von Daten erledigen Sie mittels der Positionsparameter beim Aufruf. Alle Shell-Interpreter erlauben, zumindest neun Werte zu verwenden. Mittels des Shift-Kommandos erweitern Sie den Umfang nach Ihren Vorstellungen.

Speziell die Bash benötigt dieses Kommando aber nicht. Positionsparameter sprechen Sie auch für Werte größer als 9 in der Form ${Position} an. Möchten Sie alle Positionsparameter zusammengefügt auf einmal verwenden, greifen Sie auf den Inhalt der Variable $@ zu.

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • 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.
  • Erste Schritte mit Bash-Skripten
    Das Programmieren von Shell-Skripten ist keine Hexerei. Schon mit wenigen Grundkenntnissen sparen Sie durch das Automatisieren alltäglicher Aufgaben viel Zeit.
  • Kreislauf
    Schleifen ermöglichen das mehrmalige Abarbeiten von Anweisungen. Dabei kann das begrenzende Ereignis sowohl außerhalb als auch innerhalb der Schleife liegen.
  • 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.
  • Scripted Reality
    Aus den Shell-Tipps und dem Guru-Training kennen Sie viele nützliche Kommandozeilentools. Die können Sie in kleinen Shell-Skripten zu leistungsfähigen Miniprogrammen bündeln. Im einfachsten Fall lassen Sie damit mehrere Befehle automatisch nacheinander ablaufen, doch Skripte haben noch mehr zu bieten.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(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!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...