Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m122:learningunits:lu07:funktionen [2024/11/26 06:36] – angelegt msuter | modul:m122:learningunits:lu07:funktionen [2024/12/12 09:24] (aktuell) – [Variablen in Funktionen] msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== LU07a - Funktion definieren ====== | ====== LU07a - Funktion definieren ====== | ||
| - | ### Einführung in Funktionen in Bash | + | [[https:// |
| + | <WRAP center round todo 60%> | ||
| Funktionen in Bash sind eine Möglichkeit, | Funktionen in Bash sind eine Möglichkeit, | ||
| - | #### Definition einer Funktion | + | </ |
| - | Funktionen werden in Bash folgendermaßen definiert: | + | |
| - | ```bash | + | ===== Definition einer Funktion ===== |
| + | Funktionen werden in Bash folgendermassen definiert: | ||
| + | |||
| + | < | ||
| function name { | function name { | ||
| # Befehle | # Befehle | ||
| } | } | ||
| - | ``` | + | </ |
| Alternativ kannst du die `function`-Schlüsselwort weglassen: | Alternativ kannst du die `function`-Schlüsselwort weglassen: | ||
| - | ```bash | + | < |
| name() { | name() { | ||
| # Befehle | # Befehle | ||
| } | } | ||
| - | ``` | + | </ |
| + | |||
| + | ===== Aufrufen einer Funktion ===== | ||
| - | #### Aufrufen einer Funktion | ||
| Eine Funktion wird durch ihren Namen aufgerufen, ohne Klammern: | Eine Funktion wird durch ihren Namen aufgerufen, ohne Klammern: | ||
| - | ```bash | + | < |
| name | name | ||
| - | ``` | + | </ |
| + | |||
| + | ==== Beispiel ==== | ||
| - | #### Beispiel | ||
| Hier ist ein einfaches Beispiel, das eine Funktion namens `greet` definiert: | Hier ist ein einfaches Beispiel, das eine Funktion namens `greet` definiert: | ||
| - | ```bash | + | < |
| #!/bin/bash | #!/bin/bash | ||
| Zeile 38: | Zeile 43: | ||
| greet " | greet " | ||
| - | ``` | + | </ |
| **Ausgabe: | **Ausgabe: | ||
| - | ``` | + | < |
| Hallo, Welt! | Hallo, Welt! | ||
| - | ``` | + | </ |
| + | |||
| + | <WRAP center round tip 60%> | ||
| + | Beachte, dass die Definition der Funktion **vor** dem Aufruf stehen muss. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Parameter in Funktionen ===== | ||
| - | #### Parameter in Funktionen | ||
| Funktionen können Argumente wie Skripte selbst annehmen. Diese werden mit `$1`, `$2` usw. innerhalb der Funktion referenziert, | Funktionen können Argumente wie Skripte selbst annehmen. Diese werden mit `$1`, `$2` usw. innerhalb der Funktion referenziert, | ||
| - | #### Rückgabewerte | + | ===== Rückgabewerte |
| Funktionen können numerische Rückgabewerte verwenden, die mit dem Befehl `return` gesetzt werden: | Funktionen können numerische Rückgabewerte verwenden, die mit dem Befehl `return` gesetzt werden: | ||
| - | ```bash | + | < |
| summe() { | summe() { | ||
| return $(($1 + $2)) | return $(($1 + $2)) | ||
| Zeile 57: | Zeile 69: | ||
| summe 3 5 | summe 3 5 | ||
| echo $? # Gibt 8 aus | echo $? # Gibt 8 aus | ||
| - | ``` | + | </ |
| Nicht-numerische Werte können über `echo` zurückgegeben und mit Command Substitution (`$(...)`) erfasst werden: | Nicht-numerische Werte können über `echo` zurückgegeben und mit Command Substitution (`$(...)`) erfasst werden: | ||
| - | ```bash | + | < |
| get_date() { | get_date() { | ||
| echo $(date) | echo $(date) | ||
| Zeile 67: | Zeile 79: | ||
| current_date=$(get_date) | current_date=$(get_date) | ||
| echo " | echo " | ||
| - | ``` | + | </ |
| + | |||
| + | ===== Variablen in Funktionen ===== | ||
| + | In Bash sind alle Variablen standardmässig als '' | ||
| + | Daher kann jeder Teil eines Bash-Scripts, | ||
| + | Wir können jedoch eine Variable innerhalb der Funktion als '' | ||
| + | Dadurch vermeiden wir Konflikte mit anderen Variablen, die den gleichen Bezeichner haben. | ||
| + | |||
| + | | <code bash> | ||
| + | function doIt() { | ||
| + | text = ' | ||
| + | } | ||
| + | |||
| + | text = ' | ||
| + | doIt | ||
| + | echo "Hello $text" | ||
| + | </ | ||
| + | function doIt() { | ||
| + | local text = ' | ||
| + | } | ||
| + | |||
| + | text = ' | ||
| + | doIt | ||
| + | echo "Hello $text" | ||
| + | </ | ||
| + | | Hello World | Hello Universe | | ||
| - | Mit Funktionen in Bash lassen sich also Skripte modularer und effizienter gestalten. | ||