@nwildner спасибо за внимание, но мне удалось найти решение проблемы, описанной выше, на форуме CentOS, нужно было только перезагрузить машину! Перейди по ссылке.
https://www.centos.org/forums/viewtopic.php?f=47&t=69338&p=291404#p291404
Да, статус выхода команды инвертирует обычное сопоставление между целыми числами и понятиями «истина/ложь».
Причина этого в том, что команды могут завершаться ошибкой по-разному. Имеется только одно нулевое значение, но в этом случае много ненулевых -значений (255, поскольку используются только 8 бит состояния выхода ). Используя ненулевое значение, отличное от -, в качестве представления сбоя, вы можете использовать различные ненулевые значения, отличные от -, для кодирования различных типов сбоя.
Например, grep
использует статус выхода 1, когда он успешно читает файлы, но не находит совпадений, и статус 2, когда он получает реальную ошибку.
Если ваше приложение не заботится о различиях между режимами сбоя, вы можете рассматривать их все как false
, используя if
или логические операторы. Если вам не все равно, вы явно сравните $?
.
Этот метод присвоения разных значений разным статусам выхода не очень распространен, но полезно иметь его под рукой, когда он вам нужен. Большинство программ просто используют 1
в качестве кода ошибки, если им не нужно их различать.
true
echo $? # 0
false
echo $? # 1