[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.