Теория по bash
Bash - это интерфейс командной строки для запуска программ + ЯП (хоть и ограниченный).
0
для true
и !0
для false
Использование 0 для true и ненулевого значения для false имеет смысл для bash, потому что при неудачном выполнении программы нужно вернуть **код ошибки **(которых много), в то время как при успешном завершении достаточно кода 0.
Код завершения конвейера
В случае с конвейером в $?
помещается статус именно последней команды.
Конвейер выше будет “истиннным”, даже если grep
не найдет ничего, ибо wc
выполнится успешно и выведет:
0 0 0
+ Для некоторых программ отстуствие ожидаемого “успешного” результата не ошибка.
Соус: Книга “Bash и кибербезопасность” ⇒ Глава 2. “Основы работы с bash”