Fish Shell:
Обробка помилок
Як це робити:
Щоб перехопити помилки в Fish, використовуйте команду status
та умовні оператори. Скажімо, ping
не спрацював; ось як це виявити:
ping -c 1 example.com
if not status is-success
echo "Щось рибне трапилось з ping."
end
Приклад виводу, якщо ping
не вдасться:
Щось рибне трапилось з ping.
Для обробки конкретного коду помилки, використовуйте status --is
:
false
if status --is 1
echo "Вловлено помилку з кодом 1."
end
Приклад виводу:
Вловлено помилку з кодом 1.
Для більш надійного підходу, розгляньте використання функції:
function try_ping
ping -c 1 example.com
or begin
echo "Ping не вдався зі статусом $status"
return 1
end
end
try_ping
Поглиблене вивчення
Обробка помилок у Fish не відповідає парадигмі try/catch
, яку ви могли б знати з вищих мов програмування. Натомість, у вас є прості статуси виходу, які надає команда status
.
Історично, в системах, подібних до Unix, статус виходу 0
означає успіх, тоді як будь-яке ненульове значення свідчить про помилку, яка зазвичай відображає різні причини невдачі. Ця конвенція використовується більшістю утиліт командного рядка і, отже, самим Fish.
Альтернативи перевіркам status
у Fish включають обробку сигналів через trap
в інших оболонках, але Fish віддає перевагу більш явній перевірці статусу, оскільки це чистіше і менш схильне до побічних ефектів.
З точки зору реалізації, обробка помилок у Fish залишається простою, але потужною, завдяки її неблокуючій природі і акценту на чіткому синтаксисі, як показано в прикладах. Коди помилок гарно інтегруються з функціями, дозволяючи створювати модульне та зрозуміле управління помилками.
Дивись також
- Документація Fish про умовні оператори: https://fishshell.com/docs/current/language.html#conditionals
- Посібник Fish про обробку помилок: https://fishshell.com/docs/current/tutorial.html#error-handling