LU07a - Funktion definieren
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.
Definition einer Funktion
Funktionen werden in Bash folgendermassen definiert:
function name { # Befehle }
Alternativ kannst du die `function`-Schlüsselwort weglassen:
name() { # Befehle }
Aufrufen einer Funktion
Eine Funktion wird durch ihren Namen aufgerufen, ohne Klammern:
name
Beispiel
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.
Parameter in Funktionen
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.
Rückgabewerte
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"
Variablen in Funktionen
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 |