English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell-Funktionen

Linux Shell kann benutzerdefinierte Funktionen haben und diese in Shell-Skripten überall aufrufen.

Das Format der Definition von Funktionen in Shell ist wie folgt:

[function] funname [()]
{
    action;
    [return int;]
}

Erklärung:

  • 1、können mit function fun() definiert werden, oder direkt mit fun() definiert werden, ohne Parameter.

  • 2、Parameter-Rückgabe, kann + anzeigt: return Rückgabe, wenn nicht, wird das Ergebnis der letzten Befehlsausführung als Rückgabewert verwendet. Nach return kann die Zahl n (0-255

Below is an example of defining a function and calling it:

#!/bin/bash
# author:Grundlegende Anleitung Website
# url:de.oldtoolbag.com
demoFun()
    echo "Das ist meine erste shell-Funktion!"
}
echo ""-----Die Funktion beginnt mit der Ausführung-----"
demoFun
echo ""-----Die Funktion ist abgeschlossen-----"

Ergebnis der Ausgabe:

-----Die Funktion beginnt mit der Ausführung-----
Das ist meine erste shell-Funktion!
-----Die Funktion ist abgeschlossen-----

Below is a function defined with a return statement:

#!/bin/bash
# author:Grundlegende Anleitung Website
# url:de.oldtoolbag.com
funWithReturn()
    echo "Diese Funktion führt die Addition der beiden übergebenen Zahlen durch..."
    echo "Geben Sie die erste Zahl ein: "
    read aNum
    echo "Geben Sie die zweite Zahl ein: "
    read anotherNum
    echo "Die beiden Zahlen sind $aNum und $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "Die Summe der beiden übergebenen Zahlen beträgt $? !"

Die Ausgabe ähnelt folgendem:

Diese Funktion führt die Addition der beiden übergebenen Zahlen durch...
Geben Sie die erste Zahl ein: 
1
Geben Sie die zweite Zahl ein: 
2
Die beiden Zahlen sind 1 und 2 !
Die Summe der beiden übergebenen Zahlen beträgt 3 !

Der Rückgabewert der Funktion kann nach dem Aufruf der Funktion durch $? erhalten werden.

Hinweis: Alle Funktionen müssen vor ihrer Verwendung definiert werden. Dies bedeutet, dass die Funktionen im Anfangsteil des Skripts platziert werden müssen, bis der Shell-Interpreter sie zum ersten Mal entdeckt, bevor sie verwendet werden können. Der Aufruf einer Funktion erfolgt nur durch den Funktionsnamen.

Funktion参数

In Shell kann man bei der Aufrufung einer Funktion Parameter übergeben. Innerhalb des Funktionskörpers kann man den Wert des Parameters durch die Form $n abrufen, zum Beispiel, $1Der erste Parameter, $2Der zweite Parameter wird angezeigt...

Beispiel für Funktionen mit Parametern:

#!/bin/bash
# author:Grundlegende Anleitung Website
# url:de.oldtoolbag.com
funWithParam(){
    echo "Der erste Parameter ist $"1 !"
    echo "Der zweite Parameter ist $"2 !"
    echo "Der zehnte Parameter ist $"10 !"
    echo "Der zehnte Parameter ist ${"10} !"
    echo "Der elfte Parameter ist ${"11} !"
    echo "Die Gesamtzahl der Parameter beträgt $#个!"
    echo "Als String alle Parameter ausgeben $"* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

Ergebnis der Ausgabe:

Der erste Parameter ist 1 !
Der zweite Parameter ist 2 !
Der zehnte Parameter ist 10 !
Der zehnte Parameter ist 34 !
Der elfte Parameter ist 73 !
Die Gesamtzahl der Parameter beträgt 11 !
als String alle Parameter ausgeben 1 2 3 4 5 6 7 8 9 34 73 !

Beachten Sie,10 kann der zehnte Parameter nicht abgerufen werden. Der zehnte Parameter kann mit ${ abgerufen werden10}. Wenn n>=10müssen ${n} verwendet werden, um den Parameter zu erhalten.

Außerdem gibt es einige spezielle Zeichen, um Parameter zu verarbeiten:

Parameterverarbeitung Beschreibung
$# Anzahl der Parameter, die an das Skript oder die Funktion weitergegeben werden
$* Zeigt alle an das Skript weitergegebenen Parameter als einen einzigen String an
$$ Aktuelle Prozess-ID der Skriptausführung
$! ID des letzten im Hintergrund laufenden Prozesses
$@ Mit*Gleich, aber mit Anführungszeichen verwendet und gibt jeden Parameter in den Anführungszeichen zurück.
$- Anzeige der aktuellen Optionen, die von Shell verwendet werden, ähnlich wie der set-Befehl.
$? Anzeige des Exit-Status des letzten Befehls. 0 bedeutet, dass es keine Fehler gab, andere Werte deuten auf Fehler hin.