Programowanie w bashu - część 3

do bezpieczne nasz koncepcje Dowiemy się 2 bardzo przydatnych narzędzi do programowania, które doskonale działają w Bash. Naucz się tworzyć funkcje i zdefiniuj rury na pierwszy rzut oka może wydawać się skomplikowane, ale wtedy zobaczymy ogromne utilidad że nam dostarczają.

Rury

Konkretnie i bez wykonywania zbyt wielu zwojów, potok jest metodą, która pozwala kierować dane wyjściowe jednego procesu jako dane wejściowe innego, co pozwala na szereg korzyści, takich jak zmniejszenie liczby wierszy kodu, rezygnacja z przechowywania zmiennych dla wyników i ulepszanie wydajność skryptu.

Potok jest ogólnie rozpoznawany po symbolu | który pozwala na konkatenację wyrażeń; Chociaż jest używany domyślnie, istnieją inne sposoby tworzenia rur.

Przykład: wypisz ostatnie komunikaty jądra

#dmesg pozwala zobaczyć ostatnie komunikaty jądra i załadowane sterowniki # podczas startu systemu; tail drukuje ostatnie części pliku lub #command

dmesg | ogon

Chociaż mogą być skomplikowane tak bardzo, jak chcemy, podstawowa struktura potoku pozwala na użycie wyniku jednego polecenia jako danych wejściowych do następnego, co może zapewnić dane wejściowe dla nowego polecenia, jeśli będziemy dodawać kolejne potoki.

funkcje

Funkcje to zestaw instrukcji, które są zgrupowane razem, dzięki czemu można je wykonać kilka razy bez konieczności ich przepisywania. Jest to równoważne z myśleniem, że kiedy nauczymy się gotować jakiś rodzaj żywności, napiszemy jego przepis na arkuszu i za każdym razem, gdy chcemy ugotować to jedzenie, konsultujemy się z przepisem zamiast przepisać nowy arkusz z tym samym przepisem.

Być może najważniejszą rzeczą w funkcjach jest możliwość przekazywania parametrów, danych, których użyją do ich przetwarzania i wygenerowania wyniku. Jego struktura jest następująca:

function nazwa-funkcji {

procesy

}

Przykład: funkcja pokazująca usługi działające na protokole TCP. Możemy również zobaczyć, jak zastosować więcej rur.

# Definiujemy nazwę funkcji, może to być ta, którą lubimy.

function services_tcp {

#cat łączy i wyświetla zawartość folderu / etc / services, który zawiera wszystkie usługi z powiązanymi portami.

#pierwszy grep pobiera listę i usuwa komentarze, za pomocą –v odwracamy wynik

# drugi grep wyświetla tylko te związane z tcp

cat / etc / services | grep –v "^ #" | grep tcp

}

Kiedy musimy wykonać tę funkcję, wystarczy nazwać ją nazwą:

tcp_services

W tym przypadku działa bez parametrów; W przypadku, gdy je posiada, musimy je dodać, aby funkcja działała poprawnie, w przeciwnym razie funkcja nie będzie działać poprawnie. Użycie return umożliwia funkcji zwrócenie wartości jako wyniku procesu.

Przykład: funkcja z parametrami wejściowymi, która oblicza sumę 2 liczb.

#! / bin / bash
funkcja suma ()
{
# z let możemy wykonać operację wewnątrz cudzysłowów
niech "wynik = 1 $ + 2 $"

#return umożliwia zwrócenie wartości całkowitej. Po wykonaniu zwrotu wartość zostanie zdeponowana wewnątrz zmiennej $?
zwraca $ wynik;
}
 
# Funkcja sumy jest wywoływana i przekazujemy 2 parametry wejściowe.

dodaj 2 3

# drukuje wartość $? z echem oceniającym rzeczywistą wartość zmiennej w cudzysłowie
echo -e "Wynik = $?";

<< Przejdź do poprzedniej części

Dziękuję Juan Carlos Ortiz!


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.

  1.   Wskaźnik zerowy powiedział

    Nie jestem pewien, ale instrukcja return funkcji służy jedynie do zwrócenia liczby całkowitej z przedziału od 0 do 255, podobnie jak w przypadku kodów błędów „wyjścia”, ogólnie 0, jeśli wszystko jest w porządku i innej liczby w pozostałych przypadkach. Chociaż w przykładzie to działa, nie sądzę, aby zwracanie wyniku z funkcją return.
    Tam mówię bzdury hę! oko! ha!

  2.   Juank powiedział

    Prawda pozostawiła we mnie wątpliwości. W każdym przypadku, aby uniknąć problemów z funkcjami, możemy zamienić zwrot na echo w przypadku, gdy funkcja stara się zwrócić lub wydrukować wartość lub ciąg.

  3.   Abel S. Mount Big powiedział

    To prawda, aby rozwiązać ten problem, możesz użyć polecenia bc, w funkcji sum, której możesz użyć: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel powiedział

    dobra,

    Chciałbym wiedzieć, gdzie mogę zapisać pliki bash, aby działały w całym systemie i nie jest to katalog bin, ale może być domem do tworzenia kopii zapasowych.

    Dziękuję i pozdrawiam.

  5.   Joaquin powiedział

    Dziękuję bardzo, zaczynam od scenariuszy, a prawda jest taka, że ​​jest to bardzo przydatne, bardzo uprzejmie dzielisz się swoją wiedzą!
    pozdrowienia

    1.    użyjmy Linuksa powiedział

      Dziękuję Ci! Przytulić!
      Paweł

  6.   Cristhian powiedział

    Błąd składniowy: „(” nieoczekiwany
    Przy próbie uruchomienia przykładu pojawia się błąd, skopiowałem go dokładnie tak samo

    Co może być? jestem na ubuntu 14.10