Коды выхода
Таблица
Заголовок раздела «Таблица»| Code | Meaning |
|---|---|
0 |
Everything went fine. |
1 |
Something went wrong and hostsctl has no more specific code for it. |
2 |
The command line itself was wrong; emitted by clap, never by hostsctl. |
3 |
The config is missing, unreadable, invalid, or holds errors that check reports. |
4 |
The target file or the backup directory is not writable — retry under sudo. |
5 |
Reading or writing a file failed for a reason other than permissions. |
6 |
A remote blocklist could not be downloaded. |
Как этим пользоваться
Заголовок раздела «Как этим пользоваться»В автоматизации важно отличать 3 от 4: сломанный конфиг требует человека, нехватка
прав — sudo. И check, и apply возвращают 3, когда в конфиге есть ошибки, так что
одна ветка покрывает и прогон линтера, и настоящую запись.
#!/usr/bin/env bashset -uo pipefail
hostsctl checkcase $? in 0) ;; 3) echo "конфиг сломан, повторять бессмысленно" >&2; exit 1 ;; *) echo "неожиданный отказ" >&2; exit 1 ;;esac
sudo hostsctl apply -yЕсли найдены только предупреждения, check выходит с 0: предупреждение стоит прочитать,
но останавливать из-за него пайплайн незачем.
Потоки вывода
Заголовок раздела «Потоки вывода»Ошибки идут в stderr, обычный вывод в stdout, поэтому hostsctl list | head работает как
ожидается — включая поведение при SIGPIPE, которое Rust по умолчанию подавляет, а
hostsctl возвращает как у обычной unix-утилиты.