Przejdź do głównej zawartości

function


  • function – konstrukcja składniowa dostępna w powłokach uniksowych (bash, zsh, ksh), służąca do definiowania nazwanych bloków kodu, które można wywoływać wielokrotnie.
  • Kluczowa w modularnym programowaniu skryptowym, organizacji logiki, reużywalności kodu.
  • Działa zarówno w skryptach, jak i interaktywnie – szczególnie w bash/zsh.

Okno terminala
function nazwa_funkcji() {
komendy
}
# lub równoważnie (bash/zsh/posix):
nazwa_funkcji() {
komendy
}
  • Parametry funkcji dostępne jako $1, $2, …, $@, $#.
  • Można zwrócić kod wyjścia za pomocą return (0–255).

ElementOpis
$1, $2, …Argumenty przekazane do funkcji
$@Wszystkie argumenty jako lista (cytowane oddzielnie)
$*Wszystkie argumenty jako jeden ciąg
$#Liczba argumentów
return NZakończ funkcję z kodem wyjścia N

Okno terminala
# 1. Prosta funkcja z argumentem
powitaj() {
echo "Witaj, $1!"
}
powitaj "Użytkowniku"
# 2. Funkcja sprawdzająca istnienie pliku
sprawdz_plik() {
if [[ -f "$1" ]]; then
echo "Plik istnieje."
return 0
else
echo "Plik nie istnieje."
return 1
fi
}
# 3. Pętla z funkcją do przetwarzania listy
drukuj_elementy() {
for x in "$@"; do
echo "-> $x"
done
}
drukuj_elementy a b c
  • Pierwsza funkcja wypisuje powitanie z użyciem pierwszego argumentu.
  • Druga funkcja sprawdza, czy istnieje plik i zwraca kod wyjścia.
  • Trzecia pokazuje iterację po wielu argumentach funkcji.

  • Nazwy funkcji nie mogą zawierać spacji ani znaków specjalnych (np. -, .).
  • Funkcje muszą być zdefiniowane przed wywołaniem (kolejność w skrypcie ma znaczenie).
  • W powłoce bash możliwe jest używanie lokalnych zmiennych (local zmienna).
  • Funkcja dziedziczy środowisko zmiennych – zmiany w zmiennych globalnych są trwałe, chyba że użyto local.
  • Można nadpisywać funkcje – ostatnia definicja jest aktywna.

Błąd / KomunikatPrzyczynaRozwiązanie
command not foundFunkcja wywołana przed definicją lub w innym kontekścieUpewnij się, że definicja funkcji pojawia się wcześniej
syntax errorBłąd w składni nawiasów lub ciała funkcjiSprawdź poprawność {}, średników, cudzysłowów
Argumenty nieczytelneBrak cytowania $@Użyj "$@", aby zachować integralność argumentów ze spacjami