[es otro nombre para test. Las tres líneas son líneas de comando que se ejecutan testcon algunas opciones.
En la primera línea, esta es una prueba estándar: [ 5 -gt 4 ]es lo mismo que test 5 -gt 4.
En el segundo, se omite la expresión, lo que significa salir de false ( 0 arguments: Exit false (1)).
Para el tercer caso, supongo que está utilizando GNU coreutils. En GNU, testel texto de ayuda contiene 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 es una extensión que no es POSIX ; La motivación parece ser que testse requiere para tratar esos argumentos como cadenas como cualquier otro. [es capaz de distinguir el caso de opción del caso de cadena por la presencia del ]corchete de cierre .
Tenga en cuenta que su shell probablemente proporcionará el suyo [, por lo que tendrá /bin/\[que usar esta versión.
[ OPTIONRealmente no le falta un soporte.De hecho, quizás sorprendentemente,
[es un comando (ubicado en/usr/bin/[) equivalente atest. Por lo tanto, (al menos en teoría) se le permitió usar solo el corchete izquierdo, con el corchete derecho sirviendo solo como azúcar sintáctica. Sin embargo, las nuevas versiones de shell lo requieren .fuente
testno se pueden usar con una opción (no incluida en esa posibilidad)?[.], pero un POSIX[puede hacer lo que quiera, incluso llamarlo y reiniciar la máquina o imprimir un mensaje de ayuda si lo llamas sin eso Eso permite GNUgrep's[ --version.test --versiony,[ --version ]sin embargo, deben devolver verdadero (prueba de--versionser la cadena no vacía) y no mostrar nada.