Отличается ли нулевой статус выхода от статуса булевой логики при использовании оболочки Linux?

Отличается ли нулевой статус выхода от статуса булевой логики при использовании оболочки Linux?

Я понимаю, что если я выполняю команду в оболочке с операторами амперсанда, например, command1&&command2и первая команда выполняется успешно, то она выполняется с нулевым статусом завершения.

Похоже ли это на булевую логику, где 0 — ложь, а 1 — истина, или я неправильно понял?

Имеет ли значение тип используемой оболочки? В настоящее время я использую Bourne-Again Shell.

решение1

Shell в основном равен 0, чтобы указать на отсутствие ошибок и успех, так что да, в этом смысле это логически верно, в отличие от многих языков программирования, где 0 обычно является ложью. Хотя в наши дни современные языки, как правило, имеют различные логические значения истины и лжи.

решение2

Лучшим объяснением будет то, что на самом деле существует только один «успех», но для «неудачи» существует несколько причин: файл не найден, ошибка аргумента, вычислительная ошибка и т. д. Это было соглашением ОС, а не только оболочки, в межпроцессном взаимодействии — код возврата, отправленный системным exit(2)вызовом и полученный вызовом wait(2).

Связанный контент