Каждый процесс в Unix-подобной системе при завершении возвращает число — exit code. И первое, что нужно понять: 0 всегда означает успех, а всё остальное — тем или иным образом провал.
$ ls /tmp
$ echo $?
0 # команда отработала успешно ($? хранит код последней выполненной команды)
$ ls /несуществующая_папка
ls: cannot access: No such file or directory
$ echo $?
2 # команда завершилась с ошибкой
Это соглашение идёт ещё из ранних версий Unix и стандартизировано в POSIX — именно поэтому его соблюдают буквально все языки и утилиты.
❗️Частая ошибка — писать скрипт, который печатает "Error" в консоль, но забывает вызвать
exit 1. Для CI/CD такой скрипт всё равно считается успешным.✅ Правило: любой ваш скрипт или CLI-утилита должны явно возвращать 0 при успехе и ненулевой код при ошибке — это единственный способ, которым внешние системы понимают результат.
🏃♀️ Азбука айтишника