Bash Scripting Crash: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== 1. Grundstruktur eines Skripts == Ein Bash-Skript ist eine Textdatei, die eine Reihe von Befehlen enthält, die von der Bash-Shell ausgeführt werden. Jede…“)
 
 
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== 1. Grundstruktur eines Skripts ==
+
=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.
 
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.
Zeile 9: Zeile 10:
 
</pre>
 
</pre>
  
== 2. Skript ausführbar machen ==
+
*'''#!''' 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`.
 
Um ein Skript auszuführen, musst du es ausführbar machen. Dies erfolgt mit dem Befehl `chmod`.
Zeile 16: Zeile 21:
 
- Speichere das Skript, z.B. als `mein_script.sh`.
 
- Speichere das Skript, z.B. als `mein_script.sh`.
 
- Mache das Skript ausführbar:
 
- Mache das Skript ausführbar:
  <pre>
+
<pre>chmod +x mein_script.sh</pre>
  chmod +x mein_script.sh
 
  </pre>
 
 
- Führe das Skript aus:
 
- Führe das Skript aus:
  <pre>
+
<pre>./mein_script.sh</pre>
  ./mein_script.sh
 
  </pre>
 
  
== 3. Variablen ==
+
==Variablen ==
  
 
Variablen werden ohne Leerzeichen um das `=`-Zeichen deklariert. Der Wert einer Variablen wird mit `$` abgerufen.
 
Variablen werden ohne Leerzeichen um das `=`-Zeichen deklariert. Der Wert einer Variablen wird mit `$` abgerufen.
Zeile 35: Zeile 36:
 
</pre>
 
</pre>
  
== 4. Eingaben vom Benutzer lesen ==
+
==Eingaben vom Benutzer lesen ==
  
 
Verwende den Befehl `read`, um Eingaben vom Benutzer zu erhalten.
 
Verwende den Befehl `read`, um Eingaben vom Benutzer zu erhalten.
Zeile 47: Zeile 48:
 
</pre>
 
</pre>
  
== 5. Bedingte Anweisungen (if-else) ==
+
==Bedingte Anweisungen (if-else) ==
  
 
Mit `if`, `else` und `elif` kannst du bedingte Logik im Skript implementieren.
 
Mit `if`, `else` und `elif` kannst du bedingte Logik im Skript implementieren.
Zeile 62: Zeile 63:
 
fi
 
fi
 
</pre>
 
</pre>
 +
* '''[ ... ]''': 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.
  
== 6. Schleifen ==
+
==Schleifen ==
  
Es gibt zwei Arten von Schleifen in Bash: **For-Schleifen** und **While-Schleifen**.
+
Es gibt zwei Arten von Schleifen in Bash: For-Schleifen und While-Schleifen.
  
**For-Schleife:**
+
===For-Schleife===
 
<pre>
 
<pre>
 
for i in {1..5}
 
for i in {1..5}
Zeile 74: Zeile 79:
 
done
 
done
 
</pre>
 
</pre>
 +
* '''{ }''' nennt man Brace Expansion und erzeugt Listen, Sequenzen oder Textmuster.
 +
* '''{1..5}''' erzeugt die Sequenz 1 2 3 4 5.
  
**While-Schleife:**
+
===While-Schleife===
 
<pre>
 
<pre>
 
count=1
 
count=1
Zeile 85: Zeile 92:
 
</pre>
 
</pre>
  
== 7. Funktionen ==
+
* 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.
 
Du kannst Funktionen erstellen, um wiederverwendbare Codeblöcke zu erstellen.
Zeile 99: Zeile 109:
 
greet "Bob"
 
greet "Bob"
 
</pre>
 
</pre>
 +
*'''greet()''': Definiert die Funktion greet.
 +
*'''{ ... }''': Der Funktionskörper, der den Code enthält, der ausgeführt wird, wenn die Funktion aufgerufen wird.
 +
 +
==Case Anweisung==
 +
In Bash wird die case-Anweisung verwendet, um je nach Wert einer Variablen oder eines Ausdrucks unterschiedliche Aktionen auszuführen.
 +
 +
'''Beispiel:'''
 +
<pre>
 +
#!/bin/bash
 +
echo "Gib eine Zahl zwischen 1 und 3 ein:"
 +
read num
 +
case "$num" in
 +
    1)
 +
        echo "Du hast Eins eingegeben"
 +
        ;;
 +
    2)
 +
        echo "Du hast Zwei eingegeben"
 +
        ;;
 +
    3)
 +
        echo "Du hast Drei eingegeben"
 +
        ;;
 +
    *)
 +
        echo "Ungültige Zahl"
 +
        ;;
 +
esac
 +
</pre>
 +
 +
*Das ''';;''' ist notwendig, um jedes case-Block zu beenden.
 +
*'''esac''' ist das umgekehrte von case und markiert das Ende des case-Blocks.
 +
*Bash-case-Anweisungen sind groß-/kleinschreibungssensitiv, d. h. "apfel" und "Apfel" würden als unterschiedliche Werte behandelt, es sei denn, dies wird explizit berücksichtigt.
  
== 8. Befehlszeilenargumente ==
+
==Befehlszeilenargumente ==
  
 
Du kannst auf Befehlszeilenargumente mit `$1`, `$2`, etc., oder mit `$@` für alle Argumente zugreifen.
 
Du kannst auf Befehlszeilenargumente mit `$1`, `$2`, etc., oder mit `$@` für alle Argumente zugreifen.
Zeile 116: Zeile 156:
 
</pre>
 
</pre>
  
== 9. Rückgabestatus ==
+
==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.
 
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.
Zeile 133: Zeile 173:
 
</pre>
 
</pre>
  
== 10. Eingabe- und Ausgabeumleitung ==
+
==Eingabe- und Ausgabeumleitung ==
  
 
Mit Bash kannst du Eingaben und Ausgaben umleiten:
 
Mit Bash kannst du Eingaben und Ausgaben umleiten:
Zeile 146: Zeile 186:
 
</pre>
 
</pre>
  
== 11. Fehlerbehandlung ==
+
==Fehlerbehandlung ==
  
 
Mit `set -e` kannst du das Skript so einstellen, dass es bei einem Fehler sofort beendet wird.
 
Mit `set -e` kannst du das Skript so einstellen, dass es bei einem Fehler sofort beendet wird.

Aktuelle Version vom 27. November 2024, 14:26 Uhr

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.

Case Anweisung

In Bash wird die case-Anweisung verwendet, um je nach Wert einer Variablen oder eines Ausdrucks unterschiedliche Aktionen auszuführen.

Beispiel:

#!/bin/bash
echo "Gib eine Zahl zwischen 1 und 3 ein:"
read num
case "$num" in
    1)
        echo "Du hast Eins eingegeben"
        ;;
    2)
        echo "Du hast Zwei eingegeben"
        ;;
    3)
        echo "Du hast Drei eingegeben"
        ;;
    *)
        echo "Ungültige Zahl"
        ;;
esac
  • Das ;; ist notwendig, um jedes case-Block zu beenden.
  • esac ist das umgekehrte von case und markiert das Ende des case-Blocks.
  • Bash-case-Anweisungen sind groß-/kleinschreibungssensitiv, d. h. "apfel" und "Apfel" würden als unterschiedliche Werte behandelt, es sei denn, dies wird explizit berücksichtigt.

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"