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
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!
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.
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`
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.
Dziękuję bardzo, zaczynam od scenariuszy, a prawda jest taka, że jest to bardzo przydatne, bardzo uprzejmie dzielisz się swoją wiedzą!
pozdrowienia
Dziękuję Ci! Przytulić!
Paweł
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