Shell Skripte

Ein Shell Skript ist eine Textdatei, die mehrere Shell-Befehle enthält, die nacheinander ausgeführt werden sollen. Shell Skripte sind wichtige Hilfsmittel, wenn es darum geht, automatisiert eine Abfolge von Befehlen auszuführen, die man sonst einzeln in der Kommandozeile eingeben müsste. Das Shell-Skript wird durch einen Interpreter verarbeitet und die Befehle ausgeführt. Es gibt hierfür mehrere Interpreter, die einen unterschiedlichen Befehlsumfang beherrschen. Die in Linux Systemen am häufigsten verwendete Shell ist die bash. Deshalb bezeichnet man Shell-Scripte häufig auch als bash Skripte.

Bash Skripte schreiben

Bash Skripte können mit jedem Texteditor geschrieben und bearbeitet werden. Unter UBUNTU bietet sich der Texteditor nano an. Für fortgeschrittene Benutzer gibt es den Editor vi, der auf jedem LINUX-System standardmäßig installiert ist.

Skripte sollten mit der Endung *.sh versehen werden, um klar zu machen, dass es sich um ein Skript handelt. Dies ist kein "Muss", aber guter Programmierstil. Auf jeden Fall sollten Skripte nicht wie bereits bestehende Bash-Befehle benannt werden, da dies schnell zu Problemen führt.

Bash Skripte ausführen

Mit dem Befehl bash wird das Skript SkriptName von der Bash interpretiert und die im Skript enthaltenen Befehle ausgeführt.

bash SkriptName.sh

Die Erweiterung *.sh steht für guten Programmierstil und zeigt an, dass es sich um ein Shell-Skript handelt.

Korrekter Aufbau eines Shell Skripts

Der richtige Aufbau eines Shell Skripts ist wichtig, damit ein Skript auch richtig verarbeitet werden kann.

In der ersten Zeile des Skriptes wird festgelegt mit welchem Interpreter das Skript ausgeführt werden soll. Der absolute Pfad zum Interpreter (üblicherweise zur bash) wird folgendermaßen festgelegt:

#!/bin/bash

Die Zeichenfolge #! (bezeichnet als "Shebang" oder "sharp Bang") wird vom Interpreter als Kommentar behandelt, vom System jedoch erkannt. Die Pfadangabe zum Interpreter sollte immer als absoluter Pfad vorliegen. Informationen der $PATH Umgebungsvariable werden nicht verarbeitet!

Skripte direkt ausführen

Damit das Skript direkt ausgeführt werden kann, muss die Skript-Datei mit dem chmod Befehl ausführbar gemacht werden. Das Skript kann dann folgendermaßen direkt ausgeführt werden:

./SkriptName

./ bedeutet, dass sich das Skript im aktuellen Ordner befindet.

Kommentare in Skripten

Kommentare in Skripten werden mit dem Hash-Zeichen # eingeleitet. Die Bash ignoriert alle Zeichen hinter dem Hash-Zeichen. Allerdings werden Hash-Zeichen innerhalb von Quotes (Anführungszeichen) nicht erkannt.

Kommentare dienen der Übersichtlichkeit und dem Verständnis von Skripten und sollten daher auch verwendet werden, vor allem wenn mehrere Benutzer mit dem Skript arbeiten und es eventuell modifizieren müssen.

Leerzeichen in Bash-Skripten

Leerzeichen dienen der Shell zur Trennung und zur Strukturierung von Befehlen.
Daher ist die korrekte Verwendung von Leerzeichen äußerst wichtig für die fehlerfreie Funktion eines Skriptes!
Üblicherweise werden mehrere hintereinander stehende Leerzeichen als ein einziges Leerzeichen interpretiert. Dies ist bei der Bildschirmausgabe zu berücksichtigen.

Es lohnt sich auf jeden Fall nach den Leerzeichen im Quelltext zu sehen, wenn ein Skript fehlerhaft ausgeführt wird! Die strikten Regeln zur Verwendung von Leerzeichen in Bash-Skripten widersprechen den meisten Regeln, die man von anderen Programmiersprachen kennt.

Variablen in Skripten

Wie in jeder Programmiersprache, können auch in Bash-Skripten Variablen definiert werden. Eine Typisierung von Variablen ist nicht vorgesehen.

Variablen werden wie folgt definiert und initialisiert:

VarBezeichner=VarWert
  • VarBezeichner: Bezeichner der Variablen
  • VarWert: Wert (Inhalt) der Variablen

Soll die Wertzuweisung Sonderzeichen enthalten, so muss die Zuweisung in "Quotes" stehen oder die Sonderzeichen müssen mit Backslash maskiert werden.

Wichtig! Rechts und links vom Gleichheitszeichen darf kein Leerzeichen stehen!

Ausgaben in Skripten

Mit dem Befehl echo lassen sich Variablen oder Zeichenketten auf dem Bildschirm darstellen. Diese Ausgaben können auch in Dateien umgeleitet oder angehängt werden. Auf diese Art lassen sich mit Hilfe der Shell umfangreiche Textdateien erzeugen.

Kommunikation mit dem Benutzer

Bei der Shell handelt es sich um eine tastaturbasierte Konsole. Daher läuft die Kommunikation Benutzer-Betriebssystem fast ausschließlich über die Tastatur ab. Die Shell kennt dazu den read-Befehl.

Kontrollstrukturen für den Programmablauf

Die Bash kennt zahlreiche Kontrollstrukturen zur Programmablauf-Steuerung, wie verschiedene Verzweigungen und Schleifen. So lassen sich Skripte ereignisorientiert steuern. Dies macht die Bash zu einem mächtigen Werkzeug.