Funktionen, ein mächtiges Feature der Shell-Programmierung, sind eine Gruppe von Befehlen, die nach gemeinsamen Funktionen organisiert sind. Diese einfach zu verwaltenden Einheiten geben beim Aufruf einen einzelnen Wert zurück und geben nichts aus. Die Verwendung einer Funktion umfasst zwei Schritte:
1. Funktion definieren
2. Aufruf der Funktion
Shell-Funktion vs. Shell-Alias
Shell-Funktionen und Aliase unterscheiden sich in zweierlei Hinsicht.
– Aliase akzeptieren keine Argumente wie Funktionen.
– Wenn ein Befehlsname als Funktion und Alias definiert ist, hat der Alias Vorrang.
Shell-Funktionen anzeigen
Um die Funktionsdefinitionen anzuzeigen, verwenden Sie den folgenden Befehl:
# typeset -f list () { ls --color=auto -al | wc -l } num () { who | wc -l }
Definieren einer Funktion
Eine Funktion wird durch Verwendung des folgenden allgemeinen Formats definiert:
# function [function name] { command; . . . command; }Hinweis :Nach der öffnenden Klammer und vor der schließenden Klammer muss ein Leerzeichen stehen.
Das folgende Beispiel definiert eine Funktion namens num, die die Gesamtzahl der derzeit beim System angemeldeten Benutzer anzeigt. Die num-Funktion führt den who-Befehl aus, dessen Ausgabe weiter an den wc-Befehl geleitet wird.
$ function num { who | wc -l; }
Shell-Funktionen in Shell-Skripten
Funktionen sind nicht nur in Shell-Skripten nützlich, sondern werden auch in Befehlszeilensituationen verwendet, in denen ein Alias unbrauchbar ist. Zu Demonstrationszwecken werden Shell-Funktionen auf der Befehlszeile ausgeführt, um zu veranschaulichen, wie die Funktionen ausgeführt werden.
Das folgende Beispiel erstellt eine Funktion namens list, die die Gesamtzahl der Unterverzeichnisse und Dateien im aktuellen Verzeichnis anzeigt. Die list-Funktion ruft den ls-Befehl auf, dessen Ausgabe an den wc-Befehl geleitet wird:
$ function list { ls -al | wc -l; }
$ list 34
Aufrufen einer Funktion
Sie können eine Funktion aufrufen, indem Sie einfach den Funktionsnamen in der Befehlszeile oder im Shell-Skript eingeben.
$ [function name]
Um beispielsweise die Funktion num in der Befehlszeile aufzurufen, verwenden Sie den folgenden Befehl.
$ num