Shell-Funktionen

Die Linux-Shell ermöglicht es Benutzern, Funktionen zu definieren, die dann in Shell-Skripten frei aufgerufen werden können.

Das Format zum Definieren einer Funktion in der Shell ist wie folgt:

[ function ] funname [()]

{

    action;

    [return int;]

}

Hinweis:

  • 1. Sie können mitfunction fun()definieren, oder direktfun()ohne Parameter definieren.
  • 2. Für den Rückgabewert können Sie explizit hinzufügen:returnreturn. Wenn nichts hinzugefügt wird, wird das Ergebnis des letzten Befehls als Rückgabewert verwendet.returngefolgt von einem numerischen Wertn(0-255).

Das folgende Beispiel definiert eine Funktion und ruft sie auf:

Beispiel

#!/bin/bash
# Autor: Beispiel-Tutorial
# url:www.example.com

demoFun(){
    echo "Dies ist meine erste Shell-Funktion!"
}
echo "-----Die Funktion beginnt mit der Ausführung-----"
demoFun
echo "-----Die Ausführung der Funktion ist abgeschlossen-----"

Ausgabeergebnis:

-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----

Im Folgenden wird eine Funktion mit einerreturn-Anweisung definiert:

Beispiel

#!/bin/bash
# Autor: Beispiel-Tutorial
# url:www.example.com

funWithReturn(){
    echo "Diese Funktion wird die beiden eingegebenen Zahlen addieren..."
    echo "Geben Sie die erste Zahl ein: "
    read aNum
    echo "Geben Sie die zweite Zahl ein: "
    read anotherNum
    echo Die beiden Zahlen sind$aNumund$anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "Die Summe der beiden eingegebenen Zahlen ist $? !"

Die Ausgabe ähnelt der folgenden:

这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字分别为 1 和 2 !
输入的两个数字之和为 3 !

Der Rückgabewert der Funktion wird nach dem Aufruf der Funktion über$? ermittelt.

Hinweis:Alle Funktionen müssen vor der Verwendung definiert werden. Das bedeutet, die Funktion muss am Anfang des Skripts stehen, und sie kann erst verwendet werden, wenn der Shell-Interpreter sie zum ersten Mal antrifft. Um eine Funktion aufzurufen, verwenden Sie einfach ihren Funktionsnamen.

Hinweis: returnDie return-Anweisung kann nur eine ganze Zahl zwischen 0 und 255 zurückgeben, und die Summe der beiden eingegebenen Zahlen kann diesen Bereich überschreiten.

Um dieses Problem zu lösen, können Sie die return-Anweisung ändern und direkt echo verwenden, um die Summe auszugeben, anstatt return zu verwenden:

Beispiel

funWithReturn(){
    echo "Diese Funktion wird die beiden eingegebenen Zahlen addieren..."
    echo "Geben Sie die erste Zahl ein: "
    read aNum
    echo "Geben Sie die zweite Zahl ein: "
    read anotherNum
    sum=$(($aNum + $anotherNum))
    echo Die beiden Zahlen sind$aNumund$anotherNum !"
    echo $sum  # Die Summe der beiden Zahlen ausgeben
}

Funktionsparameter

In Shell können Sie beim Aufrufen einer Funktion Parameter an sie übergeben. Innerhalb des Funktionskörpers werden die Parameterwerte in der Form $n abgerufen. Zum Beispiel steht $1 für den ersten Parameter, $2 für den zweiten Parameter...

Beispiel für eine Funktion mit Parametern:

Beispiel

#!/bin/bash
# Autor: Beispiel-Tutorial
# url:www.example.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 ist $# !"
    echo "Alle Parameter als Zeichenfolge ausgeben $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

Ausgabeergebnis:

第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !

Beachten Sie, dass $10 den zehnten Parameter nicht abrufen kann; um den zehnten Parameter zu erhalten, benötigen Sie ${10}. Wenn n>=10, müssen Sie ${n} verwenden, um den Parameter zu erhalten.

Darüber hinaus gibt es mehrere Sonderzeichen, die zur Behandlung von Parametern verwendet werden:

Parameterverarbeitung Beschreibung
$# Die Anzahl der an das Skript oder die Funktion übergebenen Parameter
$* Alle an das Skript übergebenen Parameter als eine einzelne Zeichenkette anzeigen
$$ Die aktuelle Prozess-ID des laufenden Skripts
$! Die ID des letzten im Hintergrund laufenden Prozesses
$@ Wie $*, aber bei Verwendung Anführungszeichen hinzufügen und jeden Parameter in Anführungszeichen zurückgeben.
$- Die aktuell von der Shell verwendeten Optionen anzeigen, mit derselben Funktion wie der set-Befehl.
$? Den Exit-Status des letzten Befehls anzeigen. 0 bedeutet kein Fehler; jeder andere Wert weist auf einen Fehler hin.
Weitere Erweiterungen