Tryb nocny
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