Ten przewodnik opracowuje niektóre z powszechnych praktyk w programowaniu BASH.
Bash Scripting
Bash to program powłoki, który jest odpowiedzialny za interpretację i wykonywanie poleceń. Oprócz wykonywania poleceń ręcznych, Bash obsługuje również skrypty. Te skrypty są zestawem poleceń zadeklarowanych w pliku tekstowym. Bash Scripting to prosty i dostępny język programowania do nauki w Linux. Jest to wymóg, jeśli jesteś zainteresowany zadaniami administracji systemu.
Jak każda inna umiejętność, wytrwałość i powtarzanie pomogą Ci poprawić. Chociaż nie ma ustalonego zestawu zasad, oto niektóre z nawyków, które mogą znacznie zwiększyć jakość skryptu.
Właściwe wcięcie
Wcięcie jest dużą częścią kodowania. Właściwe wcięcie jest najważniejsze dla czytelnego i możliwego do utrzymania kodu.
Właściwe wcięcie może być ratunkiem, jeśli pracujesz z wieloma poziomami logiki. Wcięcie ułatwia rozpoznanie warstw logicznych.
Oto przykład skryptu multi-logic z właściwym wcięciem.
#!/bin/bash
odczyt -p „Wprowadź wartość” var_x
if [$ ((var_x%2)) -eq 0]; Następnie
Wyjście 0
w przeciwnym razie
Wyjście 1
fi
Oto jak będzie wyglądać kod bez odpowiedniego wcięcia.
#!/bin/bash
odczyt -p „Wprowadź wartość” var_x
if [$ ((var_x%2)) -eq 0]; Następnie
Wyjście 0
w przeciwnym razie
Wyjście 1
fi
Komentowanie
Komentowanie jest jedną z najważniejszych rzeczy, jeśli chodzi o zrozumienie kodów. Komentarze powinny wyjaśnić różne części kodu, zwłaszcza gdy jest to złożone. Bez wysiłku zdezorientowanie się o wiele części kodu, nawet własne kody. Jeśli jest to duży projekt, a inni prawdopodobnie będą działać nad tym samym kodem w przyszłości.
Na przykład, oto przykładowy skrypt z komentarzami i bez.
Nazwa użytkownika = 1 $
# Sprawdź istnienie nazwy użytkownika
grep ^$ nazwa użytkownika: /etc /passwd
Jeśli [$? != 0]; Następnie
echo „No taki użytkownik: $ nazwa użytkownika”
Wyjście 1
fi
Użytkownik = 1 USD
grep ^$ nazwa użytkownika: /etc /passwd
Jeśli [$? != 0]; Następnie
echo „$ Użytkownik nie znaleziono”
Wyjście 1
fi
Kod powrotu, jeśli coś pójdzie nie tak
Kiedy coś pójdzie nie tak, zwrócenie wartości niezerowej jest zawsze dobrym pomysłem. Kod może działać w dowolnym momencie, szczególnie z warunkami warunkowymi. Posiadanie kodu powrotnego do pracy może zaoszczędzić tonę kłopotów. To sprawia, że debugowanie jest bardziej skuteczne.
W tym przykładzie ustalimy, czy liczba jest dziwna, czy nawet. Zamiast drukowania wyjścia kod wyjściowy sygnalizuje wynik.
#!/bin/bash
odczyt -p „Wprowadź wartość” var_x
if [$ ((var_x%2)) -eq 0]; Następnie
Wyjście 0
w przeciwnym razie
Wyjście 1
fi
Skrypt istnieje po błędach
W wielu sytuacjach Bash będzie kontynuował wykonywanie skryptu, nawet gdy określona część się nie powiedzie, co poważnie wpływa na resztę skryptu.
Aby upewnić się, że skrypt istnieje po stawieniu się błędu śmiertelnego, zaleca się posiadanie następujących wierszy na początku.
$ set -o errexit
Czasami Bash może również spróbować użyć niezgłoszonej zmiennej, powodując błąd logiczny. Korzystanie z następującego polecenia zapewni, że Bash przestanie wykonywać skrypt, jeśli użyje zmiennej niezeklarowanej.
$ set -o rzeczownik
Zastąpienie dowodzenia
W sytuacjach może być konieczne pracę z wynikami konkretnego polecenia. Możemy to zrobić za pomocą podstawienia dowodzenia.
Podstacja dowodzenia ma różne sposoby wdrażania.
$ echo „echo„ hello świat ”''
$ echo $ (echo „Hello World)
Zawsze zaleca się użycie drugiej opcji
Znacząca nazwa zmiennej
Zmienne są integralną częścią złożonego skryptu Bash. Każda zmienna powinna mieć właściwą nazwę, która oznacza jej użycie.
Często wzorce nazw mogą również czas; Ludzie unikną wpisywania kilku dodatkowych znaków w zamian za krótkoterminowy zysk czas. Jednak taka praktyka jest przepisem na katastrofę. Jeśli chodzi o długoterminową konserwację takiego kodu, może być skomplikowane, aby zrozumieć cel zmiennej.
Byłoby najlepiej, gdybyś również był spójny w zmiennych nazewnictwa. Wzorce nazw losowych zmiennych może również prowadzić do zamieszania w przyszłości.
Spójrz na dwa przykładowe kody, oba wykonują to samo zadanie. Który kod lepiej zrozumieć i z pracować?
#!/bin/bash
odczyt -p „Wprowadź długość:” x
Przeczytaj -p „Wprowadź szerokość:” y
Z = $ [$ x*$ y]
Echo „Obszar: $ z”
#!/bin/bash
odczyt -p „Enter Długość:” długość
Przeczytaj -p „Wprowadź szerokość:”
obszar = $ [$ długość*$ szerokość]
Echo „Obszar: $ obszar”
W BASH wszystkie zmienne środowiskowe są nazwane wielkimi literami. Zaleca się użycie małych liter dla zmiennych skryptów, aby uniknąć konfliktów.
Za pomocą funkcji
W programowaniu BASH funkcja jest sposobem na grupowanie poleceń, które można wykonać później. Pomaga zmniejszyć powtarzanie kodu. Funkcje sprawiają, że kod jest bardziej czytelny i możliwy do utrzymania.
Teraz istnieją określone scenariusze, w których funkcje mają sens. Jeśli używasz garstki skoncentrowanych poleceń, konfiguracja funkcji może zaoszczędzić wiele problemów. Jeśli używasz tylko jednego polecenia, posiadanie funkcji nie ma wpływu na wydajność.
Tak samo jak zmienne, nazwy funkcji powinny być znaczące.
funkcja fn_odd ()
Local var_x
odczyt -p „Wprowadź numer” var_x
Przeczytaj var_x
if [$ ((var_x % 2)) -eq 0]; Następnie
Echo „nawet”
w przeciwnym razie
Echo „dziwne”
fi
Typy argumentów
W Bash nie ma ustalonego sposobu deklarowania typu zmiennego. Może to powodować porównywanie zmiennych sprzecznych typów danych. Zapewnienie, że zmienne i argumenty są tym samym oczekiwanym typem, zaoszczędzi wiele bólu głowy.
W poniższym przykładzie skrypt wydrukuje, czy argument jest liczbą, czy nie.
Jeśli ! [„1 $” -eq "$ 1" 2> /dev /null]
Następnie
Echo „Błąd: nie liczba”
Wyjście 1
fi
Brakujące argumenty lub złe argumenty zamówienia
Zawsze dobrym pomysłem jest założenie, że dane wejściowe użytkownika prawdopodobnie będą miały nieprawidłowe dane, bez względu na wszystko. Prawdopodobieństwo jest wyższe, gdy użytkownik musi wprowadzić więcej niż jeden argument.
Musisz mieć mechanizmy korekcji błędów w punktach wejściowych użytkownika, aby uniknąć katastrofy z powodu niewłaściwego wprowadzania użytkownika. Wyjaśnij instrukcję, co powinien zrobić użytkownik.
Właściwe wyjście
Podczas uruchamiania skryptów ludzie powinni wiedzieć, co powinni wiedzieć. Nie powinni czytać twojego kodu, aby zrozumieć jego cel lub to, co robi.
Na ekranie powinny być opinia wyjaśniająca, co dzieje się za kulisami na każdym kroku. Na przykład, jakie byłoby wrażenia użytkownika, gdyby menedżer pakietów nie wydrukował żadnego znaczącego wyjścia na różnych etapach jego działania?
Debugowanie
Po napisaniu skryptu Bash może sprawdzić składnię skryptu pod kątem błędów bez wykonania. Aby wykonać sprawdzenie składni, użyj następującego polecenia Bash.
$ bash -nn