Bash-Skript-Beispiele

|   Tipps & Tricks | Ubuntu 20.04Ubuntu 18.04Bash

Ein Unix-Shell-Programm interpretiert Anweisungen und Programme in Form von Befehlen. Diese Befehle werden entweder direkt vom Benutzer eingegeben, oder sie können nacheinander aus einer Datei (einem so genannten Shell-Skript) ausgeführt werden.

Ein wichtiger Unterschied von bash-Skripten im Vergleich zu anderen Programmiersprachen besteht darin, dass sie interpretiert und nicht kompiliert werden. Wenn du ein Shell-Skript schreibst und es dann ausführst, wird es von deinen Betriebssystem interpretiert, ohne dass eine Kompilierung erforderlich ist.

Mit Skripten kannst du fast alles tun, was du auch in einer normalen Shell-Umgebung tun könntest.

Voraussetzungen

Ein Linux-Server mit aktiviertem Root-Zugriff oder ein Benutzer mit sudo-Privilegien. Alle gängigen Linux-Distributionen (Debian, Ubuntu, CentOS, Fedora usw.) sind in der Lage, Shell-Skripte auszuführen.

Der echo-Befehl in Skripten

Du kannst ein Bash-Skript vom Terminal oder von einer Bash-Datei aus ausführen, die auf deinem Computer oder Server gespeichert ist.

Schreibe dein erstes Bash-Skript-Beispiel, indem du eine einfache Shell-Skript-Datei namens test.sh erstellen, die die Zeile "Hallo Welt!" ausgibt:

nano test.sh

Die Erweiterung .sh ist eine Abkürzung für shell. Fahre fort, indem du die folgenden Zeilen einfügst:

#!/bin/bash
echo "Hallo Welt!"

Zum Speichern drückst du Strg+O und dann die Eingabetaste, um den Dateinamen zu bestätigen. Drücke dann Strg+X, um den Nano-Texteditor zu verlassen.

Wenn du das getan haben, führe das Bash-Skript mit dem folgenden Befehl aus:

bash test.sh

Dadurch wird die folgende Ausgabe erzeugt:

Hallo Welt!

Tipp: Du kannst mit dem nachfolgenden Befehl das Script ausführbar machen. Dann kannst du es ohne den Befehl bash durch Angabe des Pfades ausführen.

chmod 755 test.sh

Jetzt kannst du es durch Pfadangabe und Scriptname aufrufen.

./test.sh

Benutzereingaben in einem Bash-Skript erhalten

Du kannst Eingaben über die Tastatur einlesen und einer benutzerdefinierten Shell-Variablen mit dem Lesebefehl einen Wert zuweisen. Dadurch wird alles, was du über die Tastatur eingegibst wird, gelesen und in der Variable gespeichert.

Erstellezuerst ein neues Bash-Skript mit dem Namen eingabe.sh:

nano input.sh

Füge dann die folgenden Zeilen hinzu. Diese Befehle zeigen eine Frage an, nehmen die Eingabe des Benutzers entgegen, geben den eingegebenen Wert aus und kombinieren ihn gleichzeitig mit einer Zeichenfolge.

#!/bin/bash
echo "Wie ist Dein Name?"
read name
echo "Mein Name ist $name"

Speichere und schließe die Datei und führe anschließend das Skript mit dem folgenden Befehl aus:

bash eingabe.sh

Du wirst aufgefordert, deinen Namen einzugeben und folgende Ausgabe wird erzeugt:

Wie ist dein Name?
Tom
Mein Name ist Tom

If-Anweisungen in Bash-Skripten

Bash if-Anweisungen sind sehr nützlich und ermöglichen es, Entscheidungen in Bash-Skripten zu treffen. Mit if-Anweisungen kannst du entscheiden, ob ein Codeblock auf der Grundlage einer vorgegebenen Bedingung ausgeführt werden soll oder nicht.

Die grundlegende Syntax der if-Anweisung lautet wie folgt:

if [condition];
then

fi

Alles, was zwischen den Schlüsselwörtern then und fi liegt, wird nur ausgeführt, wenn die Bedingung wahr ist.

Zum besseren Verständnis erstelle eine Datei if-test.sh:

nano if-test.sh

Hier wird der Variablen x die Zahl 5 zugewiesen. Da der Wert von $x kleiner ist als 10, wird die Ausgabe "einstellige Zahl" ausgegeben. Würdest du der Variablen x den Wert 15 zuweisen, wäre die Ausgabe "zweistellige Zahl".

Hinweis: Da es keine Obergrenze für den Bereich "zweistellige Zahl" gibt, wird selbst bei einer dreistelligen Zahl "zweistellige Zahl" ausgegeben.

#!/bin/bash
x=5
if [ $x < 10 ];
then
echo "einstellige Zahl"
else
echo "zweistellige Zahl"
fi

Speichere und schließe die Datei und führe anschließend des Bash-Skripts mit dem folgenden Befehl aus:

bash if-test.sh

Du solltest die folgende Ausgabe sehen:

einstellige Zahl

If-Anweisungen mit AND-Logik in Bash

Wenn Du in einem Bash-Skript auf mehrere Bedingungen prüfen möchtest, kannst du dazu Logikgatter verwenden. Das Logikgatter AND gibt nur dann WAHR zurück, wenn beide Vergleiche, die durchgeführt werden, WAHR sind. Die UND-Logik kann mit dem Symbol && definiert werden.

Erstelle eine neue Datei logik-and.sh, mit der du die UND-Logik testet:

nano logik-and.sh

Füge die folgenden Zeilen hinzu:

echo "Bitte Namen eingeben:"
read name
echo "Bitte Alter eingeben:"
read alter
echo "=========="
if [[ ( $name == "Tom" && $alter == "40" ) ]];
then
echo "Du hast Recht"
else
echo "Du hast KEIN Recht"
fi

Speichere und schließe die Datei und führe anschließend das Skript mit dem folgenden Befehl aus:

bash logik-and.sh

Das Skript fragt nach deinem Namen und Alter und vergleicht die Eingaben dann mit der UND-Logik. Wenn beide Variablen mit den Werten, mit denen sie verglichen werden (hier "Tom" und "40"), übereinstimmen, dann lautet die Ausgabe "Du hast Recht" - andernfalls lautet die Ausgabe "Du hast KEIN Recht". Beide Werte müssen mit den Variablen identisch sein, damit die if-Anweisung erfolgreich ist.

Bitte Namen eingeben:
Tom
Bitte Alter eingeben:
40
==========
Du hast Recht

If-Anweisungen mit OR-Logik in Bash

Die OR-Bedingung wird auch häufig in Bash-Skripten verwendet, wenn du prüfen möchtest, ob mehrere Bedingungen einzeln erfüllt sind. Ein OR-Gatter gibt einen TRUE-Wert zurück, wenn mindestens eine der erforderlichen Bedingungen erfüllt ist.

Erstelle das logik-or.sh-Skript mit folgendem Befehlt:

nano logik-or.sh

Füge die folgenden Zeilen hinzu:

#!/bin/bash
echo "Gib eine Zahl zwischen 1 und 99 whelche durch 10 geteilt werden kann ein:"
read number
if [[ ( $number -eq 10 || $number -eq 20 || $number -eq 30 || $number -eq 40 || $number -eq 50 || $number -eq 60 || $number -eq 70 || $number -eq 80 || $number -eq 90 ) ]]
then
echo "Richtig"
else
echo "Falsch"
fi

Speichere und schließe die Datei und führe das Skript mit dem folgenden Befehl aus:

bash logik-or.sh

Das Skript fordert den Benutzer auf, eine beliebige Zahl zwischen 1 und 99 einzugeben, die durch 10 geteilt werden kann. Wenn der Wert eine Zahl ist, die durch 10 teilbar ist (z.B. 10 oder 20), dann lautet die Ausgabe "Richtig" - andernfalls lautet die Ausgabe "Falsch".

Gib eine Zahl zwischen 1 und 99 whelche durch 10 geteilt werden kann ein:
88
Falsch
Gib eine Zahl zwischen 1 und 99 whelche durch 10 geteilt werden kann ein:
40
Richtig

If-Else-Anweisungen in Bash

If-Else-Anweisungen ermöglichen es dem Shell-Interpreter, die richtige Entscheidung auf der Grundlage mehrerer Bedingungen zu treffen. Wenn die Bedingung in der if-Anweisung nicht erfüllt ist, dann wird ein Codeblock zwischen else und fi ausgeführt. Beachte, wenn die Bedingung der if-Anweisung erfüllt ist, wird der Code im else-Block nicht ausgeführt.

Erstelle eine Datei if-else.sh mit folgendem Befehl:

nano if-else.sh

Füge die folgenden Zeilen hinzu:

#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo "x ist groesser als y"
else
echo "x ist kleiner als y"
fi

Speichere und schließe die Datei. Führe dann das Skript mit dem folgenden Befehl aus:

bash if-else.sh

Dadurch wird folgende Ausgabe erzeugt:

x ist kleiner als y