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