Bash funktion
Version vom 16. November 2022, 19:01 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ Eine Funktion ist ein Name für ein Kommando oder für eine Gruppe von Kommandos. Funktionen werden vorrangig in Shellskripten verwendet, um wiederkehrende K…“)
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 sie sich in einer Datei speichern lassen und diese Datei von anderen Skripten geladen werden kann (sourcen).
Eine Funktion wird wie folgt definiert: Format: [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. (ausser man benutzt das Kommando builtin)
- 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
- Wird eine Funktion mittels "exit" verlassen, wird auch der rufende Prozess beendet
- Der Rückgabewert einer Funktion ist der Rückgabewert des letzten in ihr gestarteten Kommandos
- Funktionen sind nur in der Shell ihrer Definition bekannt
- return bewirkt das Verlassen der Funktion, auch mit return kann ein Rückgabewert mitgegeben werden
Einfache Funktion
#!/bin/bash
function sux ()
{
echo "ich bin eine suxer funktion"
}
suxFunktionen mit Parameter
#!/bin/bash
FAILED=$(echo -e "\e[31mfailed\e[39m")
OK=$(echo -e "\e[32mok\e[39m")
function status()
{
if ping -w 1 -c 1 -q $2 > /dev/null
then
echo "$1 $2 $OK"
else
echo "$1 $2 $FAILED"
fi
}
function portstatus()
{
if nc -w 1 -z $2 $3 > /dev/null
then
echo "$1 ip: $2 port: $3 $OK "
else
echo "$1 ip: $2 port: $3 $FAILED "
fi
}
status google www.google.de
portstatus google-http www.google.de 80
portstatus google-https www.google.de 443Rekursive Funktion
#!/bin/bash
fac()
{
if [ $1 -le 1 ]
then
echo 1
else
ERG=$(fac $(($1-1)))
echo $(($1 * $ERG))
fi
}
fac $1- Erklärung
- Funktion wird mit dem Wert 3 aufgerufen. (Aufruf 1)
- 3 ist grösser als 1
- Funktion wird mit dem Wert 2 nochmal aufgerufen. (Aufruf 2)
- 2 ist grösser als 1
- Funktion wird mit dem Wert 1 nochmal aufgerufen. (Aufruf 3)
- 1 ist kleiner oder gleich 1
- Der Wert 1 wird in die Variable ERG in Aufruf 2 geschrieben.
- Aufruf 2 wurde mit dem Wert 2 aufgerufen dieser wird mit dem ERG also 1 multipliziert.
- Der Wert 2 wird an den Aufruf 1 als Ergebnis zurückgegeben. ERG=2
- In Aufruf eins war der Wert 3 dieser wird mit ERG = 2 multipliziert.
- Ergebnis ist 6 und wird ausgegeben.
- Ende der Rekursion