Wie man Funktionen in Bash verwendet
- Funktionen in Bash definieren
- Umfang der Variablen in der Bash
- Rückgabewerte von Funktion in Bash
- Übergeben von Argumenten an eine Bash-Funktion
Eine Funktion ist einer der wichtigsten Aspekte jeder Programmiersprache, und sie macht unseren Code wiederverwendbar und lesbar. Derselbe Code, der wiederholt verwendet wird, wird innerhalb einer Funktion geschrieben. Und wenn wir den Codeblock benötigen, rufen wir einfach die definierte Funktion auf.
Funktionen in Bash definieren
Um Funktionen in Bash
zu definieren, können wir einen der beiden folgenden Ansätze verwenden:
Bei diesem Ansatz schreiben wir den Namen der Funktion, gefolgt von Klammern. Dann definieren wir die Funktionen innerhalb der geschweiften Klammern. Die Funktionen, die dieses Format verwenden, können in einem der beiden Formate definiert werden:
function_name(){
statements
}
function_name() { statements }
Bei diesem Ansatz geben wir vor dem Funktionsnamen das Schlüsselwort function
an.
function_name(){
statements
}
function_name() { statements }
Die Anweisungen innerhalb der geschweiften Klammern bestimmen, was die Funktion tut. Der Name der Funktion hat nichts damit zu tun, was die Funktion tut, aber wir müssen die Funktionsnamen beschreibend machen. Die Definition der Funktion wird nichts bewirken. Um die Befehle in der Funktionsdefinition auszuführen, müssen wir die Funktion aufrufen.
Um die Funktion in Bash
aufzurufen, verwenden wir den Namen der Funktion.
#! /bin/bash
greet(){
echo 'Hello, Folks. Welcome to DelftStack!'
}
greet
Ausgabe:
Hello, Folks. Welcome to DelftStack!
Hier definieren wir die Funktion am Anfang mit dem Namen greet
und rufen dann die Funktion auf. Wenn wir die Funktion aufrufen, werden die Anweisungen innerhalb einer Funktionsdefinition ausgeführt, und daher sehen wir Hello, Folks. Welcome to DelftStack!
gedruckt im Terminal.
Wir können die Funktion auch mit einem anderen Ansatz definieren als
#! /bin/bash
function greet(){
echo 'Hello, Folks. Welcome to DelftStack!'
}
greet
Ausgabe:
Hello, Folks. Welcome to DelftStack!
Wir müssen sicherstellen, dass wir die Funktion immer definieren, bevor wir sie aufrufen.
Umfang der Variablen in der Bash
Der Umfang der Variablen kann entweder global oder lokal in Bash wie in anderen Programmiersprachen sein. Der Standardumfang von Variablen ist jedoch immer global, auch wenn er innerhalb des Funktionsumfangs deklariert ist. Wir müssen das Schlüsselwort local
verwenden, um eine Variable lokal zu machen.
#! /bin/bash
gvar1=1
gvar2=2
change_variables() {
local gvar1=10
gvar2=7
echo "Inside Function: gvar1: $gvar1, gvar2: $gvar2"
}
echo "Before executing function: gvar1: $gvar1, gvar2: $gvar2"
change_variables
echo "After executing function: gvar1: $gvar1, gvar2: $gvar2"
Ausgabe:
Before executing function: gvar1: 1, gvar2: 2
Inside Function: gvar1: 10, gvar2: 7
After executing function: gvar1: 1, gvar2: 7
Hier sind gvar1
und gvar2
, die oben deklariert sind, globale Variablen.
Innerhalb der Funktion wird gvar1
als lokale Variable deklariert, da wir das lokale
Schlüsselwort mit gvar1
benutzen, während sich gvar2
immer noch auf eine globale Variable bezieht, da sie kein lokale
Schlüsselwort hat. Daher wird der Wert von gvar2
global durch die Funktion geändert, während der Wert von gvar1
nur innerhalb der Funktion geändert wird.
Rückgabewerte von Funktion in Bash
Im Gegensatz zu anderen Programmiersprachen erlaubt uns Bash nicht, Werte aus der Funktion zurückzugeben. Der von der Bash-Funktion zurückgegebene Wert ist der Status der letzten in der Funktion ausgeführten Anweisung. Die Zahl 0
steht für den Erfolg, während die Zahl von 1-255
für den Misserfolg steht. Wir können den Exit-Status der Funktion mit dem Schlüsselwort return
angeben. Die return
-Anweisung beendet die Funktion ebenfalls.
#! /bin/bash
return_value(){
echo "This function returns 20!"
return 30
echo "After return statement"
}
return_value
echo $?
Ausgabe:
This function returns 20!
30
Hier können wir sehen, daß die Funktion return_value
den Wert 30
unter Verwendung der return
-Anweisung zurückgibt, und der Wert wird der Variablen “$” zugewiesen.
Wir können auch feststellen, daß die Funktion nach der Ausführung der return
-Anweisung beendet wird, da Befehle unterhalb der return
-Anweisung nicht ausgeführt werden.
Wenn wir einen Wert aus einer Funktion zurückgeben wollen, können wir den Wert einer globalen Variablen zuweisen und von außerhalb der Funktion auf die Variable zugreifen, um den Wert abzurufen.
#! /bin/bash
send_message(){
message_from_function="Hello From the function!"
}
send_message
echo $message_from_function
Ausgabe:
Hello From the function!
Im Programm weisen wir den zurückzugebenden Wert der globalen Variablen message_from_function
zu und greifen dann auf den Rückgabewert der Variablen zu.
Übergeben von Argumenten an eine Bash-Funktion
Um Argumente an eine Bash-Funktion zu übergeben, setzen wir die Argumente einfach hinter die Funktion. Wenn wir mehr als ein Argument an eine Funktion übergeben wollen, trennen wir die Argumente durch ein Leerzeichen. Um ein falsches Verarbeiten von Argumenten zu vermeiden, können wir Argumente in doppelte Anführungszeichen setzen.
Der Zugriff auf die Parameter erfolgt mit $1
$2
und so weiter auf der Grundlage ihrer Position. $0
repräsentiert den Funktionsnamen, während $#
die Anzahl der Positionsargumente in der Funktion angibt.
#! /bin/bash
send_message(){
message_from_function="Hello $1 "
}
send_message
echo $message_from_function "Delft!"
Ausgabe:
Hello Delft!
Hier wird das Argument Delft!
an die Funktion übergeben und in der Funktion mit dem Parameter $1
zugegriffen, und wir erhalten Hello Delft!
als Endausgabe der Funktion.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn