Bash/Funktionen: Unterschied zwischen den Versionen
Dirkwagner verschob die Seite Bash/Funktionen nach Kategorie:Bash/Funktionen Markierung: Neue Weiterleitung |
Weiterleitung auf Kategorie:Bash/Funktionen entfernt Markierung: Weiterleitung entfernt |
||
Zeile 1: | Zeile 1: | ||
Eine Funktion ist ein Name für ein Kommando oder für eine Gruppe von Kommandos. | |||
Funktionen werden vorrangig in Shellskripten verwendet, um wiederkehrende Kommandosequenzen nicht ständig neu schreiben zu müssen. | |||
Ein großer Vorteil von Funktionen ist, dass sich diese in einer Datei speichern lassen und diese Datei von anderen Skripten geladen werden kann. | |||
Eine Funktion wird wie folgt definiert: | |||
[function] Funktionsname() { Kommando; [Kommando;] } | |||
Bei der Verwendung von Funktionen sind einige Regeln zu befolgen: * Deckt sich der Name der Funktion mit einem builtin-Kommando, wird immer die Funktion ausgeführt und niemals das Kommando. Ebenso verdeckt ein Funktionsname ein gleichnamiges Kommando: | |||
'''type test''' | |||
test is a shell builtin | |||
'''test(){ echo "ich bin eine Funktion"; } | |||
type test''' | |||
test is a function | |||
test () | |||
{ | |||
echo "ich bin eine Funktion" | |||
} | |||
'''unset test'''* Die Funktion muss vor ihrer Verwendung definiert sein. | |||
* Eine Funktion läuft in der aktuellen Umgebung, d.h. alle Variablen der Umgebung sind sichtbar und alle Variablen, die in der Funktion definiert wurden, sind auch außerhalb sichtbar: | |||
'''func(){ var_in_func=xxx; } | |||
func | |||
echo $var_in_func''' | |||
xxx* Wird eine Funktion mittels »exit« verlassen, wird auch der rufende Prozess beendet: | |||
'''func(){ exit; } | |||
func''' | |||
login:* Der Rückgabewert einer Funktion ist der Rückgabewert des letzten in ihr gestarteten Kommandos: | |||
'''func(){ grep -q foo /etc/passwd; echo $?; } | |||
func''' | |||
1 | |||
'''echo $?''' | |||
0 | |||
'''func(){ return 255; } | |||
func | |||
echo $?''' | |||
255* Funktionen sind nur in der Shell ihrer Definition bekannt: | |||
'''func(){ echo "lokal"; } | |||
bash | |||
func''' | |||
bash: func: command not found | |||
'''exit | |||
func''' | |||
lokal | |||
Einer Funktion können Parameter als Argumente übergeben werden: | |||
'''Aufruf:''' Funktionsname [Arg1] [Arg2]... | |||
Innerhalb einer Funktion kann auf die Parameter mittels der Positionsparameter $1..$9 zugegriffen werden. Als Beispiel dient eine Funktion "square", die die als Argument übergebene Zahl quadriert: | |||
'''square() { test -z $1 && return 1; expr $1 \* $1; } | |||
square | |||
square 18''' | |||
324 | |||
'''Erklärung''' | |||
Das builtin-Kommando test liefert den Status "0", falls die Variable "$1" leer ist (kein Argument). | |||
In diesem Fall wird "return 1" ausgeführt und der Funktionsaufruf beendet. expr berechnet den Ausdruck und schreibt das Ergebnis auf die Standardausgabe. | |||
[[Kategorie:Bash/Funktionen]] |
Version vom 9. März 2024, 10:19 Uhr
Eine Funktion ist ein Name für ein Kommando oder für eine Gruppe von Kommandos.
Funktionen werden vorrangig in Shellskripten verwendet, um wiederkehrende Kommandosequenzen nicht ständig neu schreiben zu müssen.
Ein großer Vorteil von Funktionen ist, dass sich diese in einer Datei speichern lassen und diese Datei von anderen Skripten geladen werden kann.
Eine Funktion wird wie folgt definiert:
[function] Funktionsname() { Kommando; [Kommando;] }
Bei der Verwendung von Funktionen sind einige Regeln zu befolgen: * Deckt sich der Name der Funktion mit einem builtin-Kommando, wird immer die Funktion ausgeführt und niemals das Kommando. Ebenso verdeckt ein Funktionsname ein gleichnamiges Kommando:
type test test is a shell builtin test(){ echo "ich bin eine Funktion"; } type test test is a function test () { echo "ich bin eine Funktion" } unset test* Die Funktion muss vor ihrer Verwendung definiert sein.
- Eine Funktion läuft in der aktuellen Umgebung, d.h. alle Variablen der Umgebung sind sichtbar und alle Variablen, die in der Funktion definiert wurden, sind auch außerhalb sichtbar:
func(){ var_in_func=xxx; } func echo $var_in_func xxx* Wird eine Funktion mittels »exit« verlassen, wird auch der rufende Prozess beendet:
func(){ exit; } func login:* Der Rückgabewert einer Funktion ist der Rückgabewert des letzten in ihr gestarteten Kommandos:
func(){ grep -q foo /etc/passwd; echo $?; } func 1 echo $? 0 func(){ return 255; } func echo $? 255* Funktionen sind nur in der Shell ihrer Definition bekannt:
func(){ echo "lokal"; } bash func bash: func: command not found exit func lokal
Einer Funktion können Parameter als Argumente übergeben werden:
Aufruf: Funktionsname [Arg1] [Arg2]...
Innerhalb einer Funktion kann auf die Parameter mittels der Positionsparameter $1..$9 zugegriffen werden. Als Beispiel dient eine Funktion "square", die die als Argument übergebene Zahl quadriert:
square() { test -z $1 && return 1; expr $1 \* $1; } square square 18 324
Erklärung
Das builtin-Kommando test liefert den Status "0", falls die Variable "$1" leer ist (kein Argument).
In diesem Fall wird "return 1" ausgeführt und der Funktionsaufruf beendet. expr berechnet den Ausdruck und schreibt das Ergebnis auf die Standardausgabe.