bash. Почему if [ 0 ] истина, а if [ 1 ] ложь?
Короче — в современных ОС если программа завершается успешно, она возвращает 0, иначе — код ошибки, который больше нуля. Вот по-этому.
if [ 1 ] # единица
then echo "1 -- это истина."
else echo "1 -- это ложь."
fi
# 1 -- это ложь
Неверно, 1 это истина.