Bash Scripting Crash
Einführung
Grundstruktur eines Skripts
Ein Bash-Skript ist eine Textdatei, die eine Reihe von Befehlen enthält, die von der Bash-Shell ausgeführt werden. Jedes Skript beginnt mit der sogenannten Shebang-Zeile, die dem System mitteilt, dass das Skript mit der Bash-Shell ausgeführt werden soll.
Beispiel:
#!/bin/bash echo "Hallo, Welt!"
- #! ist das Shebang-Zeichen und teilt dem Betriebssystem mit, dass die folgende Datei mit einem bestimmten Interpreter ausgeführt werden soll.
- /bin/bash Der Pfad zur Bash-Shell, die das Skript ausführt.
- Ohne Shebang entscheidet der Aufruf über den benutzten Interpreter (z. B. bash script.sh oder Aufruf von der Bash aus)
Skript ausführbar machen
Um ein Skript auszuführen, musst du es ausführbar machen. Dies erfolgt mit dem Befehl `chmod`.
Schritte: - Speichere das Skript, z.B. als `mein_script.sh`. - Mache das Skript ausführbar:
chmod +x mein_script.sh
- Führe das Skript aus:
./mein_script.sh
Variablen
Variablen werden ohne Leerzeichen um das `=`-Zeichen deklariert. Der Wert einer Variablen wird mit `$` abgerufen.
Beispiel:
#!/bin/bash name="Alice" echo "Hallo, $name!"
Eingaben vom Benutzer lesen
Verwende den Befehl `read`, um Eingaben vom Benutzer zu erhalten.
Beispiel:
#!/bin/bash echo "Gib deinen Namen ein:" read name echo "Hallo, $name!"
Bedingte Anweisungen (if-else)
Mit `if`, `else` und `elif` kannst du bedingte Logik im Skript implementieren.
Beispiel:
#!/bin/bash
echo "Gib eine Zahl ein:"
read num
if [ $num -gt 10 ]; then
echo "Größer als 10"
else
echo "Kleiner oder gleich 10"
fi
- [ ... ]: Das ist ein Testkonstrukt (eine Alternative zu test), das Bedingungen überprüft.
- $num: Die Variable num, deren aktueller Wert geprüft wird.
- -gt: Ein Vergleichsoperator, der "greater than" (größer als) bedeutet.
- 10: Die Zahl, mit der der Wert von num verglichen wird.
Schleifen
Es gibt zwei Arten von Schleifen in Bash: For-Schleifen und While-Schleifen.
For-Schleife
for i in {1..5}
do
echo "Nummer: $i"
done
- { } nennt man Brace Expansion und erzeugt Listen, Sequenzen oder Textmuster.
- {1..5} erzeugt die Sequenz 1 2 3 4 5.
While-Schleife
count=1
while [ $count -le 5 ]
do
echo "Zähler: $count"
((count++))
done
- Die doppelten Klammern (( )) in Bash dienen dazu, arithmetische Operationen durchzuführen.
- ++ ist der Post-Inkrement-Operator. Er erhöht den Wert von count um 1.
Funktionen
Du kannst Funktionen erstellen, um wiederverwendbare Codeblöcke zu erstellen.
Beispiel:
#!/bin/bash
greet() {
echo "Hallo, $1!"
}
greet "Alice"
greet "Bob"
- greet(): Definiert die Funktion greet.
- { ... }: Der Funktionskörper, der den Code enthält, der ausgeführt wird, wenn die Funktion aufgerufen wird.
Befehlszeilenargumente
Du kannst auf Befehlszeilenargumente mit `$1`, `$2`, etc., oder mit `$@` für alle Argumente zugreifen.
Beispiel:
#!/bin/bash echo "Erstes Argument: $1" echo "Alle Argumente: $@"
Führe das Skript mit folgenden Argumenten aus:
./mein_script.sh arg1 arg2 arg3
Rückgabestatus
Jeder Befehl gibt einen Rückgabestatus-Code zurück (`0` für Erfolg, eine andere Zahl für Fehler). Du kannst den Rückgabestatus mit `$?` überprüfen.
Beispiel:
#!/bin/bash
echo "Datei zum ausgeben?: "
read file
cat $file
if [ $? -eq 0 ]; then
echo "Der Befehl war erfolgreich!"
else
echo "Der Befehl ist fehlgeschlagen!"
fi
Eingabe- und Ausgabeumleitung
Mit Bash kannst du Eingaben und Ausgaben umleiten: - Ausgabe umleiten mit `>` (überschreibt eine Datei) oder `>>` (hängt an eine Datei an). - Eingabe umleiten mit `<`.
Beispiel:
#!/bin/bash echo "Dies ist die Ausgabe" > output.txt # Überschreibt die Datei echo "Weitere Ausgabe" >> output.txt # Hängt an die Datei an
Fehlerbehandlung
Mit `set -e` kannst du das Skript so einstellen, dass es bei einem Fehler sofort beendet wird.
Beispiel:
#!/bin/bash set -e echo "Dies wird funktionieren" non_existent_command # Dies wird das Skript beenden echo "Dies wird nicht ausgeführt"