====== LU07b - Parameter und Rückgabewerte ====== [[https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_008_002.htm|ShellProg - Kapitel 6.3-6.4]] Bash-Funktionen können Argumente annehmen, ähnlich wie Skripte. Diese Argumente werden innerhalb der Funktion über Positionsparameter referenziert: * ''$1'' für das erste Argument, ''$2'' für das zweite usw. * ''$@'' und ''$*'' enthalten alle Argumente. * ''"$#"'' gibt die Anzahl der übergebenen Argumente zurück. ==== Beispiel ==== #!/bin/bash addiere() { echo $(($1 + $2)) } addiere 5 10 # Aufruf der Funktion mit zwei Argumenten **Ausgabe:** 15 In diesem Beispiel sind ''$1'' und ''$2'' die ersten beiden Argumente, die an die Funktion ''addiere'' übergeben wurden. ===== Parameter prüfen ===== Du kannst prüfen, ob Argumente übergeben wurden: zeige_argumente() { if [ "$#" -eq 0 ]; then echo "Keine Argumente übergeben." else echo "Argumente: $@" fi } zeige_argumente Hallo Welt **Ausgabe:** Argumente: Hallo Welt ===== Rückgabewerte ===== Bash-Funktionen geben standardmässig numerische Rückgabewerte zwischen ''0'' und ''255'' zurück, die mit ''return'' gesetzt werden können. Diese Werte können über die Variable ''$?'' nach dem Funktionsaufruf abgerufen werden. **Numerischer Rückgabewert:** #!/bin/bash prüfe_zahl() { if [ $1 -gt 10 ]; then return 0 # Erfolg else return 1 # Fehler fi } prüfe_zahl 15 if [ $? -eq 0 ]; then echo "Die Zahl ist größer als 10." else echo "Die Zahl ist 10 oder kleiner." fi **Ausgabe:** Die Zahl ist größer als 10. **Hinweis:** ''return'' ist auf numerische Werte beschränkt. Komplexe Daten müssen über andere Wege "zurückgegeben" werden. ==== Nicht-numerische Rückgabewerte ==== Nicht-numerische Daten (wie Strings oder Arrays) können indirekt zurückgegeben werden, z. B. durch ''echo'' und Command Substitution (''$(...)''). **Beispiel mit ''echo'':** #!/bin/bash get_date() { echo $(date) } aktuelles_datum=$(get_date) echo "Aktuelles Datum: $aktuelles_datum" **Ausgabe:** Aktuelles Datum: Mo 26. Nov 2024 10:15:30 CET ===== Rückgabe über globale Variablen ===== Eine weitere Möglichkeit besteht darin, globale Variablen zu nutzen, um Daten aus einer Funktion verfügbar zu machen. **Beispiel:** #!/bin/bash berechne() { ergebnis=$(($1 * $2)) } berechne 4 5 echo "Das Ergebnis ist: $ergebnis" **Ausgabe:** Das Ergebnis ist: 20 ===== Zusammenfassung ===== * **Parameter**: Werden mit ''$1'', ''$2'', usw. referenziert und mit ''$@'' oder ''$*'' gesammelt. * **Rückgabewerte**: Numerische Werte über ''return'', komplexe Daten über ''echo'' oder globale Variablen. * Diese Mechanismen machen Bash-Funktionen flexibel und ermöglichen die Verarbeitung verschiedener Arten von Daten.