Почему «if [0]» выполняет оператор «then» в сценарии bash?

В этом руководстве говорится:

 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 .
Кто-нибудь может это объяснить?

4
задан 14 September 2014 в 23:15

1 ответ

[ не является частью оператора if, это команда, которая оценивает выражения. [ 0 ] возвращает true, потому что форма [ Expression ] всегда имеет значение 0. Если вы попытаетесь if [ 1 -eq 2 ], оператор then не будет выполнен.

Обратитесь к странице руководства за дополнительной информацией.

0
ответ дан 14 September 2014 в 23:15

Другие вопросы по тегам:

Похожие вопросы: