Funktionen

<name>()
{
    <body>
    local <variable> # <- Lokale Variable hurra
}

Achtung! return funktioniert hier anders als gewohnt!

  • return gibt Errorstatus zurück, die numerisch sein müssen!
    • return in Funktionen ist also wie exit für das gesamte Script
  • Funktionen in bash haben also so gesehen keinen Rückgabewert!
  • Wenn von der Funktion nach stdout ausgegeben werden soll, muss die Funktion ganz normal, einfach als Name aufgerufen werden, hat dann aber nur ihren Exitcode als "Rückgabewert"
    • func <arg1> <arg2> ... wie shell commands einfach
  • Der $()-Wrapper fängt alles nach stdout (echo) ein, und gibt alles mit Leerzeichen getrennt als Rückgabewert
  • $() nennt man Command Substitution
  • Deprecated für Funktionen: `command`

Aufgabe 12 - Fibonacci

Erstelle ein Bash-Script, welches eine Funktion beinhaltet, die rekursiv die n-te Fibonacci Zahl herausfindet. Das Script selber soll keine Argumente entgegennehmen und einfach nur die 5., 10. und 15. Fibonacci Zahl ausgeben. Wir fangen mit 0 an, zu zählen, also ist fib(0) = 0, fib(1) = 1, fib(2) = 1, ... Da es hier um bash und Funktionen in bash geht, hier ein bisschen python, damit man da nicht allzu lange nachdenken muss

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)