Jak wykrywać i obsługiwać błędy w skryptach Bash

Jak wykrywać i obsługiwać błędy w skryptach Bash

Możemy użyć polecenia Trap, aby złapać system sygnału błędu przez system podczas wykonywania skryptu. Następnie możesz wykonać polecenie powłoki lub wywołać funkcję. W ten sposób możesz wykonać swój niestandardowy kod skryptu na błędach, który wystąpił w skrypcie Bash.

Może to być pomocne w przywróceniu wszelkich częściowych zmian, zamykania połączeń bazy danych lub statusu e -mail do zainteresowanych osób itp. Możesz użyć poleceń pułapek z 'BŁĄDZIĆ' Sygnały takie jak:

pułapka „on_error_function” 

Gdy błąd zostanie wygenerowany w skrypcie powłoki, wykona funkcję o nazwie „On_error_function” skryptu powłoki. Zamiast wywołać funkcję, możesz po prostu uruchomić polecenie.

Przykład: Wykonaj funkcję błędu w Bash

Zrozummy z przykładem. Utwórz przykładowy skrypt powłoki i utwórz funkcję o dowolnej nazwie. Następnie dodaj pułapka polecenie z funkcją dla BŁĄDZIĆ sygnał. Następnie dodaj proste polecenie, które generuje błąd.

#!/usr/bin/env bash on_error () echo „Wystąpił jakiś błąd” pułapka „on_error 'err ls ~/dir_not_exists
123456789#!/usr/bin/env bash on_error () echo „Wystąpił jakiś błąd” pułapka „on_error 'err ls ~/dir_not_exists

Wykonaj powyższy skrypt i powinieneś zobaczyć poniższe wyniki:

Wyjście: LS: Nie można uzyskać dostępu '/home/tecadmin/dir_not_exists': nie wystąpił taki plik ani katalog 

Możesz zobaczyć, że błąd jest uwięziony i funkcja on_error () jest wykonywany przez skrypt bash.

Przykład: Wykonaj polecenie błędu w Bash

Zobaczmy jeszcze jeden przykład. Tutaj wykonamy polecenie, gdy wystąpi jakikolwiek błąd w skrypcie powłoki.

#!/usr/bin/env bash pułapka echo ohhh no!'Err ls ~/dir_not_exists
12345#!/usr/bin/env bash pułapka echo ohhh no!'Err ls ~/dir_not_exists

W powyższym skrypcie nie definiujemy żadnej osobnej funkcji. Po prostu uruchom polecenie Echo na błędach. Wykonaj powyższy skrypt i zobacz wyniki.

Wyjście: LS: Nie można uzyskać dostępu '/home/tecadmin/dir_not_exists': brak takiego pliku lub katalogu ohhh nr! 

Przykład: Wystąpił numer linii błędu

Możesz także znaleźć numer wiersza, w którym błąd wystąpił w skrypcie Bash wraz z nazwą skryptu. Aby to zrobić, użyj wbudowanego „dzwoniącego” Bash.

#!/usr/bin/env bash on_error () echo "błąd znaleziony w: $ (celller)"> i 2 pułapka 'on_error' err ls ~/dir_not_exists
123456789#!/usr/bin/env bash on_error () echo "błąd znaleziony w: $ (celller)"> i 2 pułapka 'on_error' err ls ~/dir_not_exists

Wykonaj powyższy skrypt i zobacz wyniki. Zobaczysz nazwę skryptu i numer linii, w którym wystąpił błąd.

Wyjście: LS: Nie można uzyskać dostępu '/home/tecadmin/dir_not_exists': brak takiego pliku lub błędu katalogu w: 9 ./scenariusz.cii 

Wniosek

Dziękujemy za przeczytanie tego artykułu. Mamy nadzieję, że ten samouczek pomaga w lepszym pisaniu scenariuszy skorupy poprzez złapanie błędu i podejmując działanie.

Pamiętaj też, że pułapka ERR łapie tylko błędy środowiska wykonawczego. Jakby, jeśli jakieś polecenie zwróci niezerowy kod stanu. Nie przyciąga błędów składniowych, ponieważ w przypadku błędu składni skrypt nie uruchamia się bez uruchamiania żadnego polecenia.