W tym przewodniku sprawdź, jak sprawdzić kod wyjściowy BASH ostatniego polecenia i niektóre możliwe zastosowania.
Bash Exit Code
Każde polecenie UNIX/LINUX wykonane przez skrypt powłoki lub użytkownika pozostawia status wyjścia. Jest to numer liczby całkowitej, który pozostaje niezmieniony, chyba że następne polecenie zostanie uruchomione. Jeśli kod wyjściowy wynosi 0, wówczas polecenie zakończyło się powodzeniem. Jeśli kod wyjściowy jest niezerowy (1-255), oznacza to błąd.
Istnieje wiele potencjalnych zastosowań kodu exit. Najbardziej oczywistym jest oczywiście sprawdzenie, czy ostatnie polecenie jest wykonane prawidłowo, zwłaszcza jeśli polecenie nie generuje żadnego wyjścia.
W przypadku BASH kod wyjściowy poprzedniego polecenia jest dostępny za pomocą zmiennej powłoki „$?".
Sprawdzanie kodu wyjścia Bash
Uruchom terminal i uruchom dowolne polecenie.
$ data
Sprawdź wartość zmiennej powłoki „$?”W przypadku kodu wyjścia.
$ echo $?
Ponieważ polecenie „dat” działało pomyślnie, kod wyjściowy to 0. Co by się stało, gdyby wystąpił błąd?
Spróbujmy uruchomić polecenie, które nie istnieje.
$ abcd
Sprawdź kod wyjściowy.
$ echo $?
Jest to wartość niezerowa, co wskazuje, że poprzednie polecenie nie wykonało poprawnie.
Teraz spójrz na następujące polecenie:
próbka $ cat.txt | Grep „Moneta”
Podczas pracy z poleceniem, które ma jedną lub więcej rur, kod wyjściowy będzie z ostatniego kodu wykonanego w rurze. W tym przypadku jest to polecenie GREP.
Ponieważ polecenie GREP zakończyło się sukcesem, będzie 0.
$ echo $?
W tym przykładzie, jeśli polecenie GREP się nie powiedzie, kod wyjścia będzie niezerowy.
próbka $ cat.txt | Grep „ABCD”
$ echo $?
Włączanie kodu wyjścia do skryptów
Kod wyjściowy może być również używany do scenariuszy. Jednym prostym sposobem użycia jest przypisanie go do zmiennej powłoki i praca z nią. Oto przykładowy skrypt powłoki, który wykorzystuje kod wyjściowy jako warunek do wydrukowania określonego wyjścia.
$ #!/bin/bash
$ echo „Hello World”
$ status = $?
$ [$ status -eq 0] && echo „polecenie udane” || Echo „Command nie powiodła się”
Po uruchomieniu skrypt wygeneruje następujące dane wyjściowe.
Teraz zobaczmy, co się stanie, gdy istnieje nieprawidłowe polecenie do uruchomienia.
$ #!/bin/bash
$ losowo-command
$ status = $?
$ [$ status -eq 0] && echo „polecenie udane” || Echo „Command nie powiodła się”
Po uruchomieniu wyjście będzie inne.
Wyjaśnienie wartości kodu wyjścia
Gdy kod wyjściowy jest niezerowy, wartość wynosi od 1 do 255. Co oznacza ta wartość?
Chociaż wartość jest ograniczona, wyjaśnienie każdej wartości jest unikalne dla programu/skryptu. Na przykład „LS” i „GREP” mają różne wyjaśnienia kodu błędu 1 i 2.
$ man ls
$ man grep
Definiowanie statusu wyjścia w skrypcie
Podczas pisania skryptu możemy zdefiniować niestandardowe wartości kodu wyjścia. To przydatna metoda łatwiejszego debugowania. W skryptach Bash jest to polecenie „wyjścia”, a następnie wartość kodu wyjścia.
$ exit
Zgodnie z konwencją zaleca się przypisanie kodu wyjścia 0 do pomyślnego wykonania i użycie reszty (1-255) w celu uzyskania możliwych błędów. Po osiągnięciu polecenia wyjścia wykonanie skryptu powłoki zostanie zakończone, więc uważaj na jego umieszczenie.
Spójrz na następujący skrypt powłoki. Tutaj, jeśli warunek zostanie spełniony, skrypt zakończy się kodem wyjścia 0. Jeśli warunek nie jest spełniony, kod wyjściowy wyniesie 1.
$ #!/bin/bash
$ jeśli [[„$ (whoami)” != root]]; Następnie
$ echo "nie użytkownik root."
$ exit 1
$ fi
$ echo „root użytkownik”
$ exit 0
Sprawdź wynik uruchomienia tego skryptu bez uprawnienia Sudo lub użytkownika „root”.
$ ./próbka.cii
$ echo $?
Końcowe przemyślenia
Ten przewodnik pokazuje, jakie są kody wyjściowe i jak możesz z nich korzystać. Pokazuje także, jak przypisać odpowiednie kody wyjściowe w skrypcie Bash.
Zainteresowany scenariuszem Bash? Jednym z najłatwiejszych sposobów na rozpoczęcie pracy jest napisanie własnych skryptów. Sprawdź ten prosty przewodnik, jak napisać prosty skrypt bash.
Szczęśliwy komputer!