В силу определенных обстоятельств необходимо написать скрипт на bash, Ранее писал на С, PHP.
В php подобная конструкция выполнится верно, ибо 0 есть ничто/ничего (но 0 не NULL, хотя и с результатом NULL if не выполнится), а 1 выполнится в любом случае, ибо 1 это что-то существующее (число или строка) и не является «ничем».
Докопался я до этого в неправильных обработках вложенных циклов if (вложенные циклы выполнялись всегда, независимо от того, что я задавал в качестве условия. Например, условия [ 1>2 ] и [ let «3<2» ] всегда true и запускают вложенность then.
Подобное упоминание я нашел и
здесь, где самая интересная вырезка:
#!/bin/bash
if [ 0 ] # ноль
then echo "0 -- это истина."
else echo "0 -- это ложь."
fi
# 0 -- это истина.
if [ 1 ] # единица
then echo "1 -- это истина."
else echo "1 -- это ложь."
fi
# 1 -- это ложь.
if [ -1 ] # минус один
then echo "-1 -- это истина."
else echo "-1 -- это ложь."
fi
# -1 -- это истина.
В нормальных мануалах описывается почему условия возвращают тот или иной результат. Я не смог найти описания почему такова логика работы. Почему так происходит?