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!"
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"