Jak debugować skrypt bash?

Jak debugować skrypt bash?

Każdy program musi być wolny od błędów, zanim dotrze do konsumentów. Twórcy oprogramowania starają się, aby oprogramowanie były wolne od błędów. Ale trudno jest uczynić kod bezbłędny, gdy są tysiące linii. Debugowanie jest procesem bieżącym; Pomaga natychmiast wykrywać błędy, gromadzenie cennych informacji o kodzie i eliminowanie zbędnych kawałków kodu.

Wszystkie języki programowania mają pewne powszechne i kilka odrębnych podejść do znalezienia błędów. Na przykład programy debugowania można użyć do szybkiego usuwania błędów. Podczas gdy skontaktowanie nie ma żadnego konkretnego narzędzia do debugowania kodu. Ten zapis dotyczy omawiania różnych technik debugowania, które można użyć do uczynienia skryptu Bash bezbłędnego. Zanim zagłębimy się w metody, miejmy podstawowe zrozumienie skorup i skorupy:

Co to jest skorupa w Linux?

Po uruchomieniu komputera jądro otrzymuje informacje o załączonym sprzęcie i umożliwia interakcję innych załączonych komponentów. Oprócz tego zarządza pamięcią, procesor i rozpoznaje każdy nowy peryferyjna. Podsumowując, jądro jest kręgosłupem każdego systemu operacyjnego. Ale czy kiedykolwiek myślałeś, aby wchodzić bezpośrednio w interakcje z jądrem, nakazać wykonanie konkretnego zadania? Czy to nawet możliwe, aby to zrobić? Absolutnie! Za pomocą powłoki, programu komputerowego z interaktywnym interfejsem, każdy może obsługiwać jądro. Shell umożliwia ludziom interakcję z jądrem i instruuje go, aby wykonał dowolne zadanie.

W UNIX są dwie główne skorupy Bourne Shell I C Shell. Oba te typy mają swoje podkategorie. Różne rodzaje pocisków Bourne są Korn Shell (KSH), Almquist Shell (Ash), Bourne Again Shell (Bash), I Z Shell (ZSH). Jednocześnie powłoka C ma swoje własne podkategorie, takie jak C Shell (CSH) I Tex C Shell (TCSH). Jak wspomniano powyżej, ze wszystkich skorupek, Bash (Bourne Again Shell) jest najczęściej używaną powłoką i wychodzi z pudełka w wielu dystrybucjach Linux ze względu na jego wydajność i przyjazność dla użytkownika.

Bash jest domyślną powłoką wielu rozkładów Linuksa i jest szeroko używany przez miliony użytkowników Linux. Jest tak różnorodny i wpływowy, że może wykonywać każde zadanie, które zwykle wykonujesz w aplikacjach opartych na GUI. Możesz edytować pliki, zarządzać plikami, przeglądać zdjęcia, słuchać muzyki, odtwarzać filmy i wiele więcej.

Co to jest skrypt powłoki:

Jak nauczyliśmy się podstawowej idei Shell, teraz przejdźmy do skorupy. Skrypt powłoki to program komputerowy, który wykonuje wiele poleceń w powładzie, która działa jako interpreter do wykonania określonej funkcji. Jak omówiono powyżej, istnieją 2 określone typy powłok. Jednak ten przewodnik koncentruje się na Bourne ponownie Shell (Bash).
Więc co to jest skrypt bash? W Linux wszystkie polecenia bash są przechowywane w „/Usr/bin” i „/bin” lornetka składana. Na przykład, ilekroć uruchamiasz polecenie, bash wyszukuje, jeśli istnieje w katalogu, czy nie. Polecenie zostanie wykonane, jeśli znajdzie się w katalogach inaczej, daje błąd.

Co powiesz na wykonanie zadania, które wymaga wielu poleceń do uruchomienia w terminalu? W tej konkretnej sytuacji scenariusze Bash mogą Ci pomóc. Bash Scripting to forma skonstruowania skorupy, która pozwala tworzyć programy do uruchamiania wielu poleceń BASH w celu wykonania określonego zadania.

Jakie są błędy w skryptach Bash:

Pracując z skryptami Bash lub z innymi językami programowania, napotykasz wiele błędów. Błąd jest błędem lub błędem w programie, który może spowodować niepoprawne zachowanie programu.

Każdy język programowania ma własną procedurę znalezienia błędów; Podobnie Bash ma również wiele opcji wbudowanych programów debugowania terminalowego programu.

Zarządzanie błędami i debugowanie programu to nie mniej niż kłopot. Jest to czasochłonna praca i może się pogorszyć, jeśli nie jesteś świadomy odpowiednich narzędzi do debugowania programu. Ten zapis jest kompletnym przewodnikiem o debugowaniu skryptów bash. Więc zacznijmy:

Jak debugować skrypt bash:

Kiedy pracujesz nad dużymi projektami programowania, napotykasz wiele błędów lub błędów. Debugowanie programu może być czasem skomplikowane. Programiści zwykle korzystają z narzędzi do debugowania, a wielu redaktorów kodów pomaga również w znalezieniu błędów, podkreślając składnię.

Istnieją różne narzędzia w Linux do kodów debugowania, na przykład Debugger GNU, czyli „GDB.„Narzędzia takie jak GDB są pomocne w programowaniu języków, które kompilują się w binarie. Ponieważ Bash jest prostym interpretowanym językiem, nie ma potrzeby, aby ciężkie narzędzia do jego debugowania.

Istnieją różne tradycyjne techniki debugowania kodu scenariuszy Bash, a jeden z nich dodaje „Twierdzenia." Twierdzenia to warunki dodane w programach w celu sprawdzenia określonych warunków i odpowiednio wykonania programu. Jest to technika obronna, która pomaga również znaleźć błędy i testowanie. Możesz znaleźć wiele narzędzi, które pomagają w dodawaniu twierdzeń w skryptach Bash.

Cóż, dodanie twierdzeń jest jedną ze starych tradycyjnych technik. Istnieją zestawy flag/opcji dostępne w Bash, aby debugować skrypt bash. Te opcje można dodać wraz z shebang w skryptach lub dodać podczas wykonywania programu w terminalu. Tematy, które zamierzamy podjąć, są wymienione poniżej:

  1. Jak debugować skrypt bash poprzez włączenie Raża „-V” opcja
  2. Jak debugować skrypt bash za pomocą xtrace „-x” opcja
  3. Jak debugować skrypt bash za pomocą noexec „-n” opcja
  4. Jak zidentyfikować Zmienne rozliczeniowe Podczas debugowania skryptu Bash
  5. Jak debugować konkretna część skryptu
  6. Jak debugować skrypt bash za pomocą "pułapka" Komenda
  7. Jak debugować skrypt bash, eliminując Globbing plików używając "-F" opcja
  8. Jak łączyć Opcje debugowania do debugowania skryptu powłoki
  9. Jak Przekierowanie report debugowania do pliku

Sprawdźmy więc różne techniki Bash, aby debugować skrypt bash:

Jak debugować skrypt bash, włączając opcję Versare „-V”:

Jednym z najłatwiejszych podejść do debugowania skryptu Bash jest użycie „-V” opcja, znana również jako sprawa. Opcję można dodać z shebang lub jawnie umieścić z nazwą pliku skryptu podczas wykonywania. Opcja wetonowa będzie wykonywać i wydrukować każdy wiersz kodu jako proces przez interpretera. Zrozumiemy to z przykładem skryptu Bash:

#! /bin/bash
echo „Wprowadź numer 1”
Przeczytaj numer 1
echo „Wprowadź numer 2”
Przeczytaj numer 2
Jeśli [„$ numer1” -GT „$ Number2”]]
Następnie
Echo „Number1 jest większy niż liczba 2”
elif [„$ Number1” -eq "$ Number2"]
Następnie
Echo „Number1 jest równe numerowi 2”
w przeciwnym razie
Echo „Number2 jest większy niż liczba 1”
fi

Powyższy kod otrzymuje dwie liczby od użytkownika, a następnie wykonuje niektóre instrukcje warunkowe, aby sprawdzić, czy liczba jest bardziej znacząca, mniejsza czy równa drugiej wprowadzonej liczbie. Chociaż do skryptów BASH można użyć dowolnego edytora tekstu, używam edytora vim. VIM to potężny, bogaty w funkcje edytor, który podkreśla składnię skryptów bash i zmniejsza szanse na błędy składni. Jeśli nie masz edytora vim, zdobądź go, uruchamiając wspomniane polecenie:

$ sudo apt instal vim

Utwórz plik skryptu Bash za pomocą:

$ vim b_script.cii

Jeśli jesteś nowy w VIM Editor, zalecam naukę, jak korzystać z edytora VIM przed kontynuowaniem.

Teraz, wróć do skryptu, wykonaj skrypt za pomocą „-V” opcja:

$ bash -v b_script.cii

W powyższym wyjściu można zobaczyć, że każdy wiersz skryptu jest wydrukowany w terminalu, ponieważ przetwarzają one przez interpretera. Zauważ, że skrypt przestanie przyjmować wprowadzanie od użytkownika, a następnie przetworzy następny wiersz skryptu. Jak omówiono powyżej „-V” Opcję można umieścić po Shebang, jak pokazano następująco:

#! /bin/bash -v

Podobnie, pełna flaga można również dodać w następnym wierszu Shebang za pomocą "ustawić" Komenda:

#! /bin/bash
zestaw -v

Każda z omówionych powyżej metod może umożliwić omówienie.

2 Jak debugować skrypt bash za pomocą opcji Xtrace „-x”:

Śledzenie wykonania, znane również jako XTRACE, jest inteligentną i użyteczną opcją debugowania, szczególnie do śledzenia błędów logicznych. Błędy logiczne są zwykle powiązane ze zmiennymi i poleceniami. Aby sprawdzić stan zmiennej podczas wykonywania skryptu, używamy "-X" opcja. Teraz znowu uruchom „B_Script.cii" plik z "-X" flaga:

$ bash -x b_script.cii

Dane wyjściowe wyraźnie pokazuje wartość każdej zmiennej podczas procesu wykonywania. Znowu "-X" może być używany obok shebang i po linii shebang za pomocą polecenia set. Xtrace umieszcza znak „+” z każdym wierszem skryptu.

3 Jak debugować skrypt bash za pomocą opcji noexec „-n”:

Błędy składniowe są jedną z głównych przyczyn błędów. Do składniowego debugowania skryptu Bash używamy „Noexec” (Brak wykonania) Tryb. Opcja używana dla trybu NOEXEC jest "-N." Wyświetla tylko błędy składniowe kodu zamiast go wykonywać. Znacznie bezpieczniejsze podejście do debugowania kodu. Wykonajmy „B_Script.cii" Znowu z "-N" opcja:

$ bash -n b_script.cii

Nie będzie wykonywania kodu, jeśli nie będzie błędu składni. Teraz zmodyfikujmy nasz kod:

#! /bin/bash
echo „Wprowadź numer 1”
Przeczytaj numer 1
echo „Wprowadź numer 2”
Przeczytaj numer 2
Jeśli [„$ numer1” -GT „$ Number2”]]
Następnie
Echo „Number1 jest większy niż liczba 2”
elif [„$ Number1” -eq "$ Number2"]
#Następnie
Echo „Number1 jest równe numerowi 2”
w przeciwnym razie
Echo „Number2 jest większy niż liczba 1”
fi

Komentuję "Następnie" Po „Elif”. Teraz, z wykonaniem „-n” „B_Script.cii" scenariusz:

$ bash -n b_script.cii

Zgodnie z przewidywaniami wyraźnie zidentyfikował błąd i wyświetlił go w terminalu.

4 Jak zidentyfikować zmienne Unset podczas debugowania skryptu BASH:

Wykonanie literówki podczas pisania kodu jest powszechne. Często mylisz zmienną, która nie pozwala wykonywać kodu. Aby zidentyfikować taki błąd, używamy „-U” opcja. Zmodyfikujmy ponownie kod:

#! /bin/bash
echo „Wprowadź numer 1”
Przeczytaj numer 1
echo „Wprowadź numer 2”
Przeczytaj numer 2
Jeśli [„$ num1” -Gt „$ Number2”]]
Następnie
Echo „Number1 jest większy niż liczba 2”
elif [„$ Number1” -eq "$ Number2"]
Następnie
Echo „Number1 jest równe numerowi 2”
w przeciwnym razie
Echo „Number2 jest większy niż liczba 1”
fi

Na początku "Jeśli" Warunkowe stwierdzenie, przemianowałem nazwę "numer 1" zmienne do „NUM1”. Teraz „NUM1” jest zmienną niezaprzeczoną. Teraz uruchom skrypt:

$ bash -u b_script.cii

Wyjście zidentyfikowało i jawnie wyświetla nazwę zmiennej Unset.

Jak debugować konkretną część skryptu Bash:

Tryb XTRACE przetwarza każdą wiersz kodu i daje wyjście. Jednak znalezienie błędów w dużym kodzie byłoby czasochłonne, gdybyśmy już wiedzieli, która część potencjalnie powoduje błąd. Na szczęście XTRACE pozwala również na debugowanie określonej części kodu, którą można osiągnąć za pomocą "ustawić" Komenda. Miejsce „Set -x” Na początku części, którą należy debugować, a następnie „Zestaw +x” na końcu. Na przykład chcę debugować warunkowe stwierdzenia „B_Script.cii", więc załączę wszystkie warunkowe stwierdzenia w „Set -x” I „Zestaw +x” Opcje, jak pokazano w poniższym kodzie:

#! /bin/bash
echo „Wprowadź numer 1”
Przeczytaj numer 1
echo „Wprowadź numer 2”
Przeczytaj numer 2
zestaw -x
Jeśli [„$ numer” -GT „$ numer2”]
Następnie
Echo „Number1 jest większy niż liczba 2”
elif [„$ Number1” -eq "$ Number2"]
Następnie
Echo „Number1 jest równe numerowi 2”
w przeciwnym razie
Echo „Number2 jest większy niż liczba 1”
fi
Zestaw +x

Teraz uruchom skrypt za pomocą „Bash B_Script.cii".

Wyjście debuguje tylko warunki IF, jak określono.

Jak debugować skrypt bash za pomocą polecenia „pułapka”:

Jeśli twój skrypt jest skomplikowany, wówczas istnieje bardziej opracowane techniki do debugowania. Jednym z nich jest "pułapka" Komenda. "pułapka" polecenie łapie sygnały i wykonuje polecenie, gdy nastąpi konkretna sytuacja. Polecenie może być sygnałem lub funkcją. Stworzyłem kolejny scenariusz o nazwie „Sum_script.cii":

#! /bin/bash
Linia pułapki „echo” $ lineno: Pierwsza liczba to numer 1, druga liczba to numer 2 $, a suma to $ sum ”debug
echo „Wprowadź pierwszy numer”
Przeczytaj numer 1
echo „Wprowadź drugą liczbę”
Przeczytaj numer 2
sum = $ [numer1 + numer2]
echo „suma to $ sum”

"pułapka" polecenie z "ODPLUSKWIĆ" Wyświetl sygnał status zmiennych "numer 1", "numer 2" I "suma" Po wykonaniu każdego wiersza, jak pokazano w następującym obrazie wyjściowym:

Żółte bloki to puste przestrzenie, ponieważ użytkownik nie wprowadził jeszcze żadnych danych wejściowych; te przestrzenie wypełnią się, gdy użytkownik wprowadzi wartości. Ta metoda jest również bardzo pomocna w debugowaniu skryptów Bash.

Jak debugować skrypt bash, eliminując globbing plików za pomocą opcji „-f”:

Plik Globbing to proces znajdowania plików z znakami wieloznacznymi, i.mi., „*” I "?". W wielu sytuacjach nie musisz rozwinąć plików podczas debugowania. W takich przypadkach możesz zablokować globbing plików za pomocą "-F" opcja. Zrozumiemy to ze skryptem „Fglobe_script.cii":

#! /bin/bash
Echo „Wyświetl wszystkie pliki tekstowe."
LS *.tekst

Powyższy kod wyświetli wszystkie pliki tekstowe w bieżącym katalogu, wykonaj:

$ bash fglobe_script.cii

Aby wyłączyć globbing plików, użyj "-F" opcja:

$ bash -f fglobe_script.cii

Podobnie możesz użyć go z shebang i z "ustawić" polecenie również:

#! /bin/bash
Echo „Wyświetl wszystkie pliki tekstowe."
LS *.tekst
zestaw -f
echo „Wyświetl wszystkie pliki tekstowe”
LS *.tekst
Zestaw +f

Teraz biegnij „Bash fglobe_script.cii":

Część zamknięta „SET -f/SET +F” Opcje nie przetwarzały poleceń z znakami wieloznacznymi.

Jak połączyć opcje debugowania w celu debugowania skryptu Shell:

Używamy tylko jednej opcji w wyżej wymienionych technikach debugowania, ale możemy połączyć różne opcje w celu lepszego zrozumienia. Wdrożenie "-X" I „-V” Opcje do „Sum_script.cii" scenariusz. Używam „Sum_script.cii" scenariusz.

#! /bin/bash
echo „Wprowadź pierwszy numer”
Przeczytaj numer 1
echo „Wprowadź drugą liczbę”
Przeczytaj numer 2
sum = $ [numer1 + numer2]
echo „suma to $ sum”

Teraz wykonaj:

$ bash -xv sum_script.cii

Obydwa "-X" I „-V” Wyjścia są łączone, jak pokazano na obrazie wyjściowym. Podobnie możemy również połączyć „-U” Opcja z werbosą „-V” do wykrywania błędów. Zastępuję "numer 1" zmienna z „Num” W szóstym wierszu skryptu:

#! /bin/bash
to numer 2 $, a suma jest $ sum ”debug
echo „Wprowadź pierwszy numer”
Przeczytaj numer 1
echo „Wprowadź drugą liczbę”
Przeczytaj numer 2
sum = $ [num + liczba2]
echo „suma to $ sum”

Aby wyświetlić dane wyjściowe, uruchom poniżej wspomniane polecenie:

$ bash -uv sum_script.cii

Jak przekierować raport debugowania do pliku:

Zapisywanie raportu debugowania skryptu Bash do pliku może być przydatne w wielu sytuacjach. Jest to nieco trudne, ponieważ przekierowanie raportu debugowania do pliku; Używamy specjalnych zmiennych. Zaimplementujmy to „B_Script.cii" kod:

#! /bin/bash
Exec 5> dubug_report.dziennik
Bash_xtraceed = "5"
Ps4 = '$ lineno--'
echo „Wprowadź numer 1”
Przeczytaj numer 1
echo „Wprowadź numer 2”
Przeczytaj numer 2
Jeśli [„$ numer” -GT „$ numer2”]
Następnie
Echo „Number1 jest większy niż liczba 2”
elif [„$ Number1” -eq "$ Number2"]
Następnie
Echo „Number1 jest równe numerowi 2”
w przeciwnym razie
Echo „Number2 jest większy niż liczba 1”
fi

W drugim wierszu kodu widać, że przekierowujemy wyjście do „Debug_report.dziennik" plik za pomocą „Exec” Polecenie z deskryptorem pliku 5 (FD5).

Exec 5> Debug_report.dziennik: „Exec” Polecenie przekierowuje wszystko, co dzieje się w powłoce do pliku „Debug_report.dziennik."

Bash_xtracefd = ”5”: Jest to szczególna zmienna bash i nie można jej używać w żadnej innej skorupce. Należy przypisać prawidłowy deskryptor pliku, a Bash zapisze wyodrębnione dane wyjściowe „Debug_report.dziennik."

PS4 = '$ lineno- ': Jest to również zmienna bash używana do drukowania numeru linii podczas debugowania za pomocą trybu xtrace. Domyślna wartość PS4 to „+” podpisać

Powyższy skrypt generuje plik dziennika o nazwie „Debug_report.dziennik," Aby to przeczytać, użyj "kot" Komenda:

Wniosek:

Kod pełen błędów może wpływać na wydajność programu i szkodliwy dla sprzętu. Debugowanie jest bardzo ważne dla każdego programu, ponieważ sprawia, że ​​program jest bardziej wydajny. Znalezienie istniejących i potencjalnych błędów podczas opracowywania programu może uniemożliwić nieoczekiwanie zachowania programu. Duże kody zwykle wymagają aktywnego debugowania, zwiększając skuteczność kodu poprzez eliminowanie odwołania zużywających fragmenty kodu.

Wiele języków i środowisk programowych ma własnych towarzyszących debuggerów. W skryptach BASH można wdrożyć różne techniki, aby debugować skrypt. Ten przewodnik całkowicie skupił się na wszystkich metodach, które można wykorzystać do znalezienia błędów w skryptach Bash. Więc ilekroć czujesz, że twój skrypt Bash nie zachowuje się zgodnie z oczekiwaniami, użyj żadnej z wyżej wymienionych technik, ale tryb XTRACE (-x) jest w większości przypadków bardzo pomocny.