Funktionen in Bash sind eine Möglichkeit, wiederverwendbaren Code zu schreiben. Sie ermöglichen es, eine Gruppe von Befehlen in einer benannten Einheit zu bündeln, die an beliebiger Stelle im Skript aufgerufen werden kann. Das verbessert die Lesbarkeit und Wartbarkeit von Shell-Skripten.
Funktionen werden in Bash folgendermassen definiert:
function name { # Befehle }
Alternativ kannst du die `function`-Schlüsselwort weglassen:
name() { # Befehle }
Eine Funktion wird durch ihren Namen aufgerufen, ohne Klammern:
name
Hier ist ein einfaches Beispiel, das eine Funktion namens `greet` definiert:
#!/bin/bash greet() { echo "Hallo, $1!" } greet "Welt" # Aufruf der Funktion mit einem Argument
Ausgabe:
Hallo, Welt!
Beachte, dass die Definition der Funktion vor dem Aufruf stehen muss.
Funktionen können Argumente wie Skripte selbst annehmen. Diese werden mit `$1`, `$2` usw. innerhalb der Funktion referenziert, wobei `$0` der Name des Skripts ist.
Funktionen können numerische Rückgabewerte verwenden, die mit dem Befehl `return` gesetzt werden:
summe() { return $(($1 + $2)) } summe 3 5 echo $? # Gibt 8 aus
Nicht-numerische Werte können über `echo` zurückgegeben und mit Command Substitution (`$(…)`) erfasst werden:
get_date() { echo $(date) } current_date=$(get_date) echo "Aktuelles Datum: $current_date"
In Bash sind alle Variablen standardmässig als global
definiert.
Daher kann jeder Teil eines Bash-Scripts, auch Funktionen, auf alle Variablen zugreifen.
Wir können jedoch eine Variable innerhalb der Funktion als local
definieren.
Dadurch vermeiden wir Konflikte mit anderen Variablen, die den gleichen Bezeichner haben.
function doIt() { text = 'World' } text = 'Universe' doIt echo "Hello $text" | function doIt() { local text = 'World' } text = 'Universe' doIt echo "Hello $text" |
Hello World | Hello Universe |