Funktionen in Bash

Fumbani Banda 30 Januar 2023
  1. Funktionen in Bash
  2. Definieren von Funktionen in Bash
  3. Beispielfunktionen
  4. Variablenbereich in der Bash-Funktion
  5. Rückgabewerte in der Bash-Funktion
  6. Übergabe von Argumenten an Bash-Funktionen
Funktionen in Bash

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
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Verwandter Artikel - Bash Function