Что может быть неочевидным, так это то, что эти два очень различны:
if [ false ]
и
if false
Первый, как Титон и Игнасио Васкес-Абрамс, скажем, неявно проверяет, является ли строка false
пустой.Вторая версия проверяет состояние выхода команды false
.(Тестирование состояния выхода в буквальном смысле не является истинным / ложным тестом. Оно проверяет успех или неудачу, как представлено числовыми кодами. Как вы можете себе представить, состояние выхода false
всегда является ошибкой. Это его работа.)
Более подробно об этом можно узнать из BashGuide на Вики Грега .