Funkcje zrozumienia i pisania w skontlerze - część VI

Funkcje zrozumienia i pisania w skontlerze - część VI

Funkcje odgrywają ważną rolę w każdym języku programowania. Podobnie jak wiele prawdziwych języków programowania, Bash ma funkcje używane z ograniczoną implementacją.

Zrozumienie funkcji skryptu Linux Shell

Jakie są funkcje?

W programowaniu funkcje są nazwane sekcjami programu, który wykonuje określone zadanie. W tym sensie funkcja jest rodzajem procedury lub rutyny. Gdy funkcja jest nazywana, program opuszcza bieżącą sekcję kodu i zaczyna wykonywać pierwszy wiersz w funkcji. Ilekroć jest powtarzający się kod lub gdy powtórzy się zadanie, rozważ użycie funkcji.

Na przykład rozważ przypadek, w którym musimy znaleźć czynnik liczby na kilku etapach konkretnego programu. Zamiast pisać cały kod (do obliczania czynnikowego) za każdym razem, możemy napisać tę część kodu, która oblicza czynnik raz w bloku i ponownie użyć tego samego.

Dlaczego piszemy funkcje?

  1. Pomaga nam ponownie użyć kodu.
  2. Popraw czytelność programu.
  3. Efektywne wykorzystanie zmiennych w programie.
  4. Pozwala nam przetestować część części według części.
  5. Wyświetla program jako kilka podgatunków.
Funkcje w skontlerze

Ogólna składnia do pisania funkcji w skrypcie Shell zawiera następujące sposoby.

Funkcja FUNC_NAME … Polecenia… lub Func_Name () … Polecenia… Otwarcie klamrowych klamrów może być również używane w drugim wierszu. FUNC_NAME () … polecenia…

Zawsze możesz swobodnie pisać prawidłowe polecenia w tych blokach funkcyjnych, ponieważ normalnie robimy w skontlerze. Teraz spróbujmy napisać jeden prosty skrypt z małą funkcją w niej.

#!/bin/bash call_echo () echo 'to jest w środku funkcja' op = 1 $ if [$# -Ne 1]; Następnie echo „Zastosowanie: 0 USD” Else, jeśli [1 USD = 0]; następnie echo „to jest funkcja zewnętrzna” Elif [1 $ = 1]; Następnie Call_echo Else Echo „Nieprawidłowy argument” Fi Fi Exit 0

Definicja funkcji musi poprzedzić pierwsze wywołanie. Nie ma nic takiego jak „deklarowanie funkcji” przed jej wywołaniem. I zawsze możemy gniazdować funkcje wewnątrz funkcji.

Notatka:- Pisanie pustych funkcji zawsze powoduje błędy składniowe.

Gdy ta sama funkcja jest zdefiniowana wielokrotnie, powołana jest wersja końcowa. Weźmy przykład.

#!/bin/bash func_same () echo 'pierwsza definicja' func_same () echo 'second definicja' func_same exit 0
Funkcje przyjmujące parametry i zwracające wartości

Weźmy głębiej, biorąc pod uwagę funkcje przyjmujące parametry i zwracając wartości. Aby zwrócić wartość z funkcji, używamy wbudowanej powłoki „return”. Składnia jest następująca.

FUNC_NAME () … polecenia… return $ ret_val

Podobnie możemy przekazywać argumenty do funkcji oddzielonych przestrzeniami, jak podano poniżej.

FUNC_NAME $ arg_1 $ arg_2 $ arg_3

Wewnątrz funkcji możemy uzyskać dostęp do argumentów w kolejności jako 1 USD, 2 USD, 3 USD i tak dalej. Spójrz na poniższy przykładowy skrypt, aby znaleźć maksimum dwóch liczb całkowitych za pomocą funkcji, aby dodać więcej jasności.

#!/bin/bash USG_ERR = 7 max_two () if ["$ 1" -eq "$ 2"]; następnie echo „równe” wyjście 0 elif [„1 $” -GT „$ 2”]; Następnie echo 1 $ El echo 2 $ Fi err_str () echo "Użycie: 0 $" Wyjdź $ usg_err num_1 = 1 $ num_2 = 2 x if [$# -NE 2]; następnie err_str elif ['expr $ num_1:' [0-9]*"-eq $ #num_1]; wtedy ['expr $ num_2:' [0-9]*"-eq $ #num_2] ; Następnie max_two $ num_1 $ num_2 else err_str fi else err_str fi exit 0

Powyższe wygląda jak nieco złożone, ale jest proste, jeśli przeczytamy linie. Pierwszy zagnieżdżony if-else, jeśli linie do celów walidacji i.mi., Aby sprawdzić numer i rodzaj argumentów za pomocą wyrażeń regularnych. Następnie wywołujemy funkcję dwoma argumentami wiersza poleceń i wyświetla się w samym wyniku. Dzieje się tak, ponieważ nie możemy zwrócić dużych liczb całkowitych z funkcji. Innym sposobem obejścia tego problemu jest użycie globalnych zmiennych do przechowywania funkcji wewnętrznej wyniku. Poniższy skrypt wyjaśnia tę metodę.

#!/bin/bash USG_ERR = 7 ret_val = max_two () if ["$ 1" -eq "$ 2"]; następnie echo „równe” wyjście 0 elif [„1 $” -GT „$ 2”]; następnie ret_val = 1 $ else ret_val = 2 $ fi err_str () echo "Użycie: 0 $" Wyjdź $ usg_err num_1 = 1 $ num_2 = 2, jeśli [$# -NE 2]; następnie err_str elif ['expr $ num_1:' [0-9]*"-eq $ #num_1]; wtedy ['expr $ num_2:' [0-9]*"-eq $ #num_2] ; Następnie max_two $ num_1 $ num_2 echo $ ret_val else err_str fi else err_str fi exit 0

Wypróbuj teraz ekscytujące problemy, które zostały wyjaśnione w poprzedniej serii scenariuszy Shell, używając funkcji w następujący sposób.

  1. Zrozum Podstawowe wskazówki dotyczące skryptów scenariuszy Linux - Część I
  2. 5 Skrypty powłoki dla nowicjusz
  3. Żeglując po świecie scenariuszy Linux Bash - część III
  4. Matematyczny aspekt programowania Linux Shell - Część IV
  5. Obliczanie wyrażeń matematycznych w języku skontaktowym skorupy - Część V

Wrócę z więcej wglądu w funkcje funkcjonalne, takie jak używanie zmiennych lokalnych, rekurencja itp. W następnej części. Bądź na bieżąco z komentarzami.