Jak wykrywać i obsługiwać błędy w skryptach Bash
- 3697
- 210
- Seweryn Augustyniak
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.
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_exists12345 | #!/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_exists123456789 | #!/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.
- « Uruchamianie wielu poleceń jednocześnie w Linux
- (Rozwiązane) Nieznane połączenie UTF8MB4_Unicode_520_ci »