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 залишається простою, але потужною, завдяки її неблокуючій природі і акценту на чіткому синтаксисі, як показано в прикладах. Коди помилок гарно інтегруються з функціями, дозволяючи створювати модульне та зрозуміле управління помилками.

Дивись також