Skip to content
Na tej stronie

Funkcje – Tworzenie skryptów Bash, krok po kroku.

Ta część strony została oznaczona, jakoby była w trakcie konstrukcji. To oznacza, że treść w miejscu tego komunikatu zostanie uzupełniona w najbliższym czasie.

Czym są funkcje w powłoce wiersza poleceń?

Funkcje są definicją własnych komend składających się z instrukcji, wykonywanych w momencie wywołania danej funkcji.

bash
wyswietl_powitanie() {
  echo Witaj Parzychedu
}

wyswietl_powitanie
wyswietl_powitanie() {
  echo Witaj Parzychedu
}

wyswietl_powitanie

Poniżej przedstawiamy funkcję wraz z jej wywołaniem, które zawierają argumenty.

bash
wyswietl_powitanie() {
  if [ $# -eq 1 ]; then
    echo Witaj "$1"
  else
    echo Witaj Parzychedu
  fi
}

wyswietl_powitanie "Wujek Stefan"
wyswietl_powitanie "$USER"
wyswietl_powitanie
wyswietl_powitanie() {
  if [ $# -eq 1 ]; then
    echo Witaj "$1"
  else
    echo Witaj Parzychedu
  fi
}

wyswietl_powitanie "Wujek Stefan"
wyswietl_powitanie "$USER"
wyswietl_powitanie

Wskazówka 😃

Ważną różnicą od innych języków jest to, że nie informujemy powłoki o przyjmowanych argumentach przez funkcję. Nawiasy odgrywają rolę odróżnienia składni i są tylko i wyłącznie dekoracyjne.

Wyjście i kod zwrotu funkcji

Funkcje, tak jak skrypty, mogą zakończyć swoje działanie, zwracając kod zwrotu oraz wyprowadzić wyjście w trakcie ich działania.

Polecenie return

Polecenia return używamy w momencie, w którym funkcja ma zakończyć swoje działanie. Możemy w poleceniu return podać liczbę, która stanie się kodem wyjścia funkcji.

bash
czy_liczba_parzysta() {
  # Zakładamy, że funkcja ma przyjąć jeden argument.
  # Wychodzimy z funkcji w przypadku, w którym nie zostanie podany dokładnie jeden argument
  if [ $# -ne 1 ]; then
    return 2
  fi

  # Zakładamy, że funkcja ma przyjąć liczbę jako pierwszy argument
  # Wychodzimy z funkcji w przypadku, kiedy nie zostanie podana prawidłowa liczba
  if ! [ "$1" -eq "$1" ]; then
    return 2
  fi

  # Liczba jest podzielna wtedy, kiedy reszta z dzielenia przez 2 wynosi 0
  if [ $(("$1" % 2)) -eq 0 ]; then
    return 0
  else
    return 1
  fi
}

if czy_liczba_parzysta 4; then
  echo Parzysta
else
  echo Nieparzysta
fi
czy_liczba_parzysta() {
  # Zakładamy, że funkcja ma przyjąć jeden argument.
  # Wychodzimy z funkcji w przypadku, w którym nie zostanie podany dokładnie jeden argument
  if [ $# -ne 1 ]; then
    return 2
  fi

  # Zakładamy, że funkcja ma przyjąć liczbę jako pierwszy argument
  # Wychodzimy z funkcji w przypadku, kiedy nie zostanie podana prawidłowa liczba
  if ! [ "$1" -eq "$1" ]; then
    return 2
  fi

  # Liczba jest podzielna wtedy, kiedy reszta z dzielenia przez 2 wynosi 0
  if [ $(("$1" % 2)) -eq 0 ]; then
    return 0
  else
    return 1
  fi
}

if czy_liczba_parzysta 4; then
  echo Parzysta
else
  echo Nieparzysta
fi