362 Poznaj Linux
Korzystanie z funkcji ułatwia programowanie i zmniejsza liczbę popełnianych błędów. Używanie tej samej funkcji w wielu różnych skryptach również niesie korzyści, ale wymaga pewnej ostrożności. Funkcje umieszczane w plikach rozrzuconych po wielu różnych katalogach utrudniają powtórne wykorzystanie danych fragmentów kodu.
Przykład prostej funkcji
Z punktu widzenia shella bash, funkcja to skrypt zagnieżdżony w innym skrypcie. Funkcje potrafią wszystko to co potrafią skrypty, a dodatkowo mogą być wykorzystywane w wielu różnych skryptach.
Do zadeklarowania funkcji służy słowo kluczowe function (opcjonalnie uzupełniane o nazwę funkcji). Podobnie jak skrypty, funkcje przyjmują argumenty, które traktuje się w identyczny sposób jak w przypadku skryptów. Całość kodu funkcji otacza się nawiasami klamrowymi (( )). Przykładowo, poniższa funkcja wypisze na ekranie słowa wywołano funkcje (...) oraz listę podanych argumentów:
function przykład ()
1
echo "Wywołano funkcje przykład z następującymi argumentami: " echo $@
1
Należy pamiętać, że $@ oznacza w shellu bash „wszystkie argumenty”.
Gdybyśmy chcieli wywołać funkcję przykład wewnątrz skryptu, wpisalibyśmy: ...(kod poprzedzający funkcję) przykład argumentl argument2 i tak dalej ...(kod następujący po funkcji)
Oto dane wyświetlone na ekranie przez funkcje przykład (z pominięciem danych wyprowadzanych przez skrypt macierzysty):
Wywołano funkcje przykład z nastepujacymi argumentami: argumentl arguir.ent2 i tak dalej
Podsumowując, należy zauważyć, ze funkcje nie różnią się zbytnio od zwykłych skryptów, ponieważ jednak każda funkcja jest tylko częścią skryptu, jej wywołanie nie powoduje konieczności uruchomienia dodatkowego shella bash.
Korzystanie z bibliotek
Biblioteki - zgodnie z definicją - składają się wyłącznie z funkcji. Aby wczytać bibliotekę do pamięci (operacja ta jest konieczna zanim będzie można skorzystać z zapisanych w bibliotece funkcji), należy uruchomić jej plik. Biblioteki nie zawierają kodu, który byłby wykonywany natychmiast po ich uruchomieniu; bash umieszcza jedynie składające