[
é outro nome para test
. Todas as três linhas são linhas de comando que são executadas test
com algumas opções.
Na primeira linha, este é o teste padrão: [ 5 -gt 4 ]
é o mesmo que test 5 -gt 4
.
No segundo, a expressão é omitida, o que significa sair de false ( 0 arguments: Exit false (1)
).
Para o terceiro caso, você está 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.
Esta é uma extensão não POSIX ; a motivação parece ser a test
necessária para tratar esses argumentos como seqüências de caracteres como qualquer outra. [
é capaz de distinguir o caso opcional do caso de cadeia pela presença do ]
colchete de fechamento .
Observe que seu shell provavelmente fornecerá o seu próprio [
e, portanto, você precisará /bin/\[
usar esta versão.
[ OPTION
realmente não está faltando um suporte.De fato, talvez surpreendentemente,
[
é um comando (localizado em/usr/bin/[
) equivalente atest
. Portanto, foi permitido (pelo menos teoricamente) usar apenas o colchete esquerdo, com o colchete direito servindo apenas como açúcar sintático. No entanto, versões mais recentes do shell exigem isso .fonte
test
não podem ser usadas com uma opção (não listadas com essa possibilidade).[
.]
, mas um POSIX[
pode fazer o que deseja, incluindo chamar nomes e reinicializar a máquina ou imprimir uma mensagem de ajuda se você chamar sem ele. Isso permite o GNUgrep
's[ --version
.test --version
e,[ --version ]
no entanto, é necessário retornar true (teste por--version
ser a sequência não vazia) e não produzir nada.