В этом руководстве говорится:
An if/then construct tests whether the exit status of a list of commands is 0
Если я выполняю 0
в bash, он говорит:
0: command not found
Значит, его статус выхода не равен 0, и [0]
также должен возвращать статус выхода ненулевого значения. . Но на самом деле он возвращает 0 статус выхода и if [0]
выполняет оператор then
, а не оператор else
.
Кто-нибудь может это объяснить?
[
не является частью оператора if
, это команда, которая оценивает выражения. [ 0 ]
возвращает true, потому что форма [ Expression ]
всегда имеет значение 0. Если вы попытаетесь if [ 1 -eq 2 ]
, оператор then
не будет выполнен.
Обратитесь к странице руководства за дополнительной информацией.