[
это другое имя для test
. Все три из этих строк являются командными строками, которые запускаются test
с некоторыми опциями.
В первой строке это стандартное тестирование: [ 5 -gt 4 ]
то же самое, что и test 5 -gt 4
.
Во втором случае выражение опущено, что означает выход false ( 0 arguments: Exit false (1)
).
В третьем случае, я полагаю, вы используете GNU coreutils. В GNU test
текст справки содержит эту заметку:
NOTE: [ honors the --help and --version options, but test does not.
test treats each of those as it treats any other nonempty STRING.
Это расширение не POSIX ; Похоже, мотивация заключается в том, что test
эти аргументы следует рассматривать как строки, как и любые другие. [
в состоянии отличить регистр варианта от регистра строки по наличию закрывающей ]
скобки.
Обратите внимание, что ваша оболочка, скорее всего, предоставит свою собственную [
, и вам придется /bin/\[
использовать эту версию.