Jak korzystać z funkcji w Bash

Jak używać funkcji w Bash przy użyciu tego opartego na powłoce systemu Unix i zgodnego z POSIX języka komputerowego. Jako język, jego funkcja polega na interpretacji poleceń systemu Linux, co pozwala nam zautomatyzować nasze powtarzalne procesy, a także tworzyć polecenia z poleceń systemu operacyjnego. W tym artykule dokonamy przeglądu jak używać funkcji w bash. Polecam przeczytać artykuł, jak to zrobić stwórz własne skrypty używając basha.

W proponowanym przez nas skrypcie do wyszukiwania pliku używamy języka Bash, znając jego nazwę. W tym celu użyjemy znajdź polecenie ale z pomocą funkcji wcześniej zdefiniowanych w tym skrypcie. Musisz wziąć pod uwagę specyfikę lub ograniczenia Bash, które nie są obecne we wszystkich językach: aby wywołać funkcję, należy ją zdefiniować wcześniej.

Zdefiniuj funkcje

Istnieją dwa sposoby definiowania funkcji: z deklaracją funkcji lub bez niej:

function nombre_funcion () 
{
    # codigo
}

lub ten inny, którego używam, jak zobaczysz później.

nombre_funcion ()
{
    # codigo
}

Również Bash zapewnia również metodę przekazywania parametrów i zwracania wyników. które zobaczymy w przyszłych artykułach.

#!/usr/bin/env bash

# ~/.bin/encontrar
# encuentra archivos a partir de la descripción de su nombre en un directorio específico
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#

EXIT_OK=0
EXIT_BAD=66

PATRON=$1
DIRECTORIO=$2

autor ()
{
 echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n"
}

ayuda ()
{
 echo -e "\nencontrar [PATRON] [DIRECTORIO]\n"
} 

noparams ()
{
 echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n"
 read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r
 if [[ $REPLY =~ ^[Ss]$ ]];
    then
       echo ""
       ayuda
 fi
}

nodir ()
{
 echo -e "\nDirectorio no Existe\n"
}

if [[ $PATRON == "-h" ]];
then 
 ayuda
 exit $EXIT_OK
fi

if [[ $PATRON == "-a" ]];
then 
 autor
 exit $EXIT_OK
fi

if [ $# -lt 2 ];
then
 noparams
else
 if [ -d $DIRECTORIO ];
 then
 echo ""
 find $DIRECTORIO -name $PATRON*
 echo ""
 exit $?
 else 
 nodir 
 exit EXIT_BAD
 fi
fi


Analiza skryptów

Definicje

Dla basha każdy proces zakończony pomyślnie musi mieć kod „0” jako sygnał. Wiersze 12 i 13 definiują obsługiwane kody błędów EXIT_OK na sukces y EXIT_BAD do wyjścia w przypadku niepowodzenia.

W liniach 15. i 16. zmiennym PATTERN i DIRECTORY są przypisane pierwszy ($ 1) i drugi ($ 2) parametr, który pojawia się w wierszu poleceń po nazwie skryptu, co zobaczymy później, gdy go wykonamy.

W wiersz 18 tworzymy naszą pierwszą funkcję. Funkcja o nazwie „autor” wyświetla autorstwo scenariusza kiedy wywołujemy to z argumentem „-a”, jak widać w if w liniach 50 ~ 54. Argument "-i" z linii 23 umożliwia wyświetlenie sekwencji «następnej linii» poprzez kodowanie «\ n».

Wywołanie noparams (linie 28 ~ 37) jest odpowiedzialne za zarządzanie zdarzeniami, które muszą wystąpić, gdy skrypt jest wywoływany bez żadnych parametrów. Pokazujemy, odpowiednio ujęty między nowymi kodami linii, komunikat wskazujący, że skrypt musi zostać wykonany z dwoma parametrami, a następnie pokazana jest opcja (linia 31) do użycia czytać Monituje o naciśnięcie „S” lub „s” w przypadku, gdy chcesz pokazać pomoc. W linii 32. dosłownie mówimy: „jeśli odpowiedź (przychodzi do nas w zmiennej $ ODPOWIEDŹ) zawiera dowolne wielkie lub małe litery ', a następnie (linia 33) pokazuje pustą linię (linia 34) i wykonuje funkcję pomocy (linie 23 ~ 26).

Funkcja nodir (linie 39–42) zostanie wykonana, gdy wykryjemy, że katalog, w którym próbowano przeszukiwać, nie istnieje.

Funkcjonalność

Dzięki temu już mamy zdefiniowano wszystkie niezbędne funkcje aby wykonać nasz program, który faktycznie zaczyna się w linii 44, sprawdzając, czy pierwszy z parametrów, które otrzymuje skrypt to "-h", jeśli jest prawdziwy, wykonaj funkcję pomocy i wyjścia wskazujące na normalne zakończenie.

Jeśli WZORZEC (pierwszy parametr opisany w linii 15) ma wartość „-a”, autor jest wyświetlany zgodnie z tym samym mechanizmem, co w poprzednim akapicie dla opcji „-h”.

Na linii 56 jest kontrolowane, że otrzymaliśmy nie mniej niż dwa parametryW tym przypadku wykonywana jest funkcja noparams, a następnie dowiadujemy się w instrukcji if z linii 60 jeśli katalog, w którym chcemy przeprowadzić wyszukiwanie, istnieje, jeśli istnieje, wyświetlany jest pusty wiersz, plik znajdź polecenie z adresem katalogu, w którym chcemy przeprowadzić wyszukiwanie, po którym następuje wzorzec (początek nazwy szukanego pliku) nową pustą linię i używając wyjść $? powierzamy wynik naszego skryptu wynikowi wygenerowanemu przez find. W przypadku, gdy stan istnienie katalogu jest fałszywe (linia 67) wywołujemy funkcję nodir i wychodzimy, wskazując na nieprawidłowe zakończenie.

Wykonanie i testowanie

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En następujące artykuły o Bash zobaczymy mechanizmy używać parametrów w funkcjachZobaczymy również, jak to zrobić artykułować dane zwrotne z nich.

Mam nadzieję i mam nadzieję, że ten post był dla Ciebie przydatny.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

     Józefa powiedział

    Cześć,
    bardzo interesujące i bardzo jasne.
    Tylko uwaga; Brak znaku $ w linii 68 przed zmienną EXIT_BAD.
    Będę dalej uczyć się na pewno z twoich artykułów.