[
é outro nome para test
. Todas essas três linhas são linhas de comando que executam test
com algumas opções.
Na primeira linha, este é um teste padrão: [ 5 -gt 4 ]
é o mesmo que test 5 -gt 4
.
No segundo, a expressão é omitida, o que significa sair do arquivo falso ( 0 arguments: Exit false (1)
).
Para o terceiro caso você está, eu acho, usando o GNU coreutils. No GNU test
, o texto de ajuda contém esta nota:
NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats any other nonempty STRING.
Isso é uma extensão não-POSIX ; a motivação parece ser que test
é necessário para tratar esses argumentos como strings como qualquer outro. [
é capaz de distinguir o caso de opção do caso de cadeia de caracteres pela presença do colchete ]
de fechamento.
Observe que seu shell provavelmente fornecerá seu próprio [
e, portanto, você terá que usar /bin/\[
para usar essa versão.