Funktionen in Bash
- Funktionen in Bash
- Definieren von Funktionen in Bash
- Beispielfunktionen
- Variablenbereich in der Bash-Funktion
- Rückgabewerte in der Bash-Funktion
- Übergabe von Argumenten an Bash-Funktionen
Dieses Tutorial erklärt die grundlegenden Funktionen in Bash und ihre Verwendung in Bash-Skripten, indem Funktionen ohne das Schlüsselwort function
und Funktionen mit dem Schlüsselwort function
verwendet werden.
Funktionen in Bash
Eine Funktion in Bash ist eine Reihe von Befehlen, die eine bestimmte Aufgabe erfüllen. Wir können Funktionen immer wieder verwenden; dies hilft zu vermeiden, denselben Befehlssatz wiederholt zu schreiben. Funktionen machen Skripte auch besser lesbar.
Im Allgemeinen nehmen Funktionen Daten auf, verarbeiten sie und geben einen Wert zurück. Beim Bash-Skripting geben die Funktionen jedoch nur den Exit-Status des letzten Befehls zurück.
Der Austrittsstatus ist ein beliebiger Wert zwischen 0
und 255
. Der Exit-Status 0
bedeutet, dass der Befehl erfolgreich ausgeführt wurde.
Definieren von Funktionen in Bash
In Bash gibt es zwei Notationen, um Funktionen zu deklarieren. Die erste Notation verwendet den Funktionsnamen mit runden Klammern, gefolgt von geschweiften Klammern, wie unten gezeigt.
name_of_function(){
command1
command2
}
Die obige Notation kann auch in einer Zeile geschrieben werden.
name_of_function(){command1; command2}
Die zweite Notation verwendet das Schlüsselwort function
, um die Funktion zu deklarieren, gefolgt von runden und geschweiften Klammern, wie unten gezeigt.
function name_of_function(){
command1
command2
}
Wir deklarieren die Funktion auch in einer Zeile, wie unten gezeigt.
function name_of_function(){command1; command2}
Beispielfunktionen
Das folgende Skript demonstriert die Verwendung einer Funktion in einem Bash-Skript. Zuerst definieren wir die Funktion und führen sie später durch Aufrufen aus. Das folgende Skript verwendet die erste Syntax der Verwendung des Funktionsnamens, gefolgt von runden und geschweiften Klammern.
Wir definieren eine Funktion namens greet
; die geschweiften Klammern geben den Körper der Funktion an. Wir haben zwei echo
-Anweisungen im Körper der Funktion, die Text auf der Standardausgabe ausgeben.
Um eine Funktion in Bash aufzurufen, geben Sie den Namen der Funktion ein. Die letzte Zeile im folgenden Skript ruft die Funktion greet
auf.
#!/bin/bash
greet(){
echo "Hello, World!"
echo "Bash is Fun!"
}
greet
Das Skript gibt die folgende Ausgabe auf der Standardausgabe aus.
Hello, World!
Bash is Fun!
Das folgende Bash-Skript definiert eine Funktion mit dem Schlüsselwort function
, gefolgt vom Funktionsnamen add
. Die Funktion add
addiert mit dem Befehl expr
zwei Zahlen 3
und 7
und weist die Summe der Variablen var
zu. Der Befehl echo
zeigt den Wert der Variablen var
auf der Standardausgabe an.
Die letzte Zeile mit dem Namen der Funktion wird verwendet, um die Funktion zur Ausführung aufzurufen.
#!/bin/bash
function add(){
var=`expr 3 + 4`
echo $var
}
add
Variablenbereich in der Bash-Funktion
In Bash sind alle Variablen standardmäßig globale Variablen. Wir können überall im Bash-Skript auf globale Variablen zugreifen, sogar innerhalb einer Funktion. Innerhalb einer Funktion definierte Variablen sind auch globale Variablen in Bash.
Um eine lokale Variable innerhalb einer Funktion in Bash zu definieren, verwenden wir das Schlüsselwort local
.
Das folgende Skript demonstriert den Variablenbereich, indem es die globalen Variablen x
und y
und eine lokale Variable innerhalb der add
-Funktion namens sum
definiert.
#!/bin/bash
x=2
y=4
function add(){
local sum
sum=`expr $x + $y`
echo $sum
}
add
Aus dem obigen Skript sind die Variablen x
und y
globale Variablen. Auf diese können wir überall im Skript zugreifen. Die Variable sum
ist eine lokale Variable, weil das Schlüsselwort local
verwendet wurde, um sie zu definieren.
Wir können nur auf eine lokale Variable innerhalb des definierten Funktionskörpers zugreifen. In diesem Fall kann die lokale Variable sum
nur innerhalb des Körpers der Funktion add
verwendet werden. Der Zugriff auf die lokale Variable sum
außerhalb des Funktionskörpers add
löst einen Fehler aus.
Rückgabewerte in der Bash-Funktion
Bash-Funktionen geben keine Werte zurück, wenn sie wie Funktionen in anderen Programmiersprachen aufgerufen werden. Bash-Funktionen geben nur den Exit-Status des zuletzt ausgeführten Befehls zurück.
Der Ausgangsstatus kann ein beliebiger Wert zwischen 0
und 255
sein. Der Exit-Status 0
bedeutet, dass der Befehl erfolgreich ausgeführt wurde. Wir können auf den Exit-Status zugreifen, indem wir den Wert von $?
drucken.
Wenn die Funktion add
aufgerufen wird, führt sie die Befehle in ihrem Körper aus. Die erste Zeile weist das Ergebnis des expr
-Befehls der sum
-Variablen zu.
Die zweite Zeile gibt den Wert der Variable sum
mit dem Befehl echo
auf die Standardausgabe aus. Die letzte Zeile gibt den Exit-Statuswert auf der Standardausgabe aus.
Der ausgegebene Exit-Status ist der des zuvor ausgeführten Befehls; Der Exit-Statuscode ist für den echo
-Befehl, der den Wert der sum
-Variablen anzeigt.
#!/bin/bash
add(){
sum=`expr 2 + 3`
echo "Sum: $sum"
echo "Exit Status: $?"
}
add
Beim Ausführen des Skripts wird die folgende Ausgabe im Standardterminal angezeigt.
Sum: 5
Exit Status: 0
Übergabe von Argumenten an Bash-Funktionen
Um Argumente an eine Bash-Funktion zu übergeben, setzen Sie die Argumente beim Aufruf der Funktion durch ein Leerzeichen getrennt neben den Funktionsnamen. Die Notation $n
kann auf die Parameter zugreifen.
Das n
repräsentiert die Position des Arguments neben dem Funktionsnamen. In unserem Fall steht $1
für das erste Argument, 1
, und $2
für das zweite Argument, 2
.
function add(){
sum=`expr $1 + $2`
echo $sum
}
add "1" "2"
Die Variable $0
ist reserviert, um den Funktionsnamen darzustellen, und $#
speichert die Anzahl der Positionsargumente, die an die Funktion übergeben werden.
Das obige Skript erzeugt die folgende Ausgabe auf der Standardausgabe.
3