Fish Shell:
Obsługa błędów
Jak to zrobić:
Aby przechwytywać błędy w Fish, użyj komendy status
i warunków. Powiedzmy, że ping
nie powiedzie się; oto jak to wykryć:
ping -c 1 example.com
if not status is-success
echo "Coś rybiego stało się z pingiem."
end
Przykładowy wynik, jeśli ping
się nie powiedzie:
Coś rybiego stało się z pingiem.
Aby obsłużyć konkretny kod błędu, użyj status --is
:
false
if status --is 1
echo "Przechwycono błąd z kodem 1."
end
Przykładowy wynik:
Przechwycono błąd z kodem 1.
Do bardziej zaawansowanego podejścia rozważ użycie funkcji:
function try_ping
ping -c 1 example.com
or begin
echo "Ping nie powiódł się ze statusem $status"
return 1
end
end
try_ping
Glebsze zaglądanie
Obsługa błędów w Fish nie odpowiada paradygmatowi try/catch
, który może być znany z języków wyższego poziomu. Zamiast tego mamy do czynienia z prostymi kodami wyjścia dostarczanymi przez komendę status
.
Historycznie, w systemach podobnych do Unix, status wyjścia 0
oznacza sukces, podczas gdy każda inna wartość niezerowa wskazuje na błąd, który często odzwierciedla różne przyczyny niepowodzenia. Ta konwencja jest stosowana przez większość narzędzi linii poleceń i zatem, również przez Fisha.
Alternatywy dla sprawdzania status
w Fish obejmują obsługę sygnałów przez trap
w innych shellach, ale Fish preferuje bardziej wyraźne sprawdzanie statusu, ponieważ jest to czyściejsze i mniej podatne na efekty uboczne.
Pod względem implementacji, obsługa błędów w Fish pozostaje prosta, a zarazem potężna, przede wszystkim dzięki jej nieblokującej naturze i naciskowi na przejrzystą składnię, jak pokazano w przykładach. Kody błędów ładnie współgrają z funkcjami, pozwalając na modułowe i czytelne zarządzanie błędami.
Zobacz również
- Dokumentacja Fisha o warunkach: https://fishshell.com/docs/current/language.html#conditionals
- Samouczek Fisha o obsłudze błędów: https://fishshell.com/docs/current/tutorial.html#error-handling