¿Qué hace el programa gnuwin32: [.exe?
Pregunta
Mirando en el directorio gnuwin32 / bin, hay un archivo de programa de aspecto extraño llamado [.exe
No pude encontrarlo en la documentación, gnuwin32.sourceforge.net o en una búsqueda en google, así que lo ejecuté y obtuve:
$ [
[: missing `]'
$
así que lo di] como parámetro y obtuve
$ [ ]
$
No se quejó, así que supuse que estaba en el camino correcto. Intenté:
$ [ hello ]
de nuevo, no tengo quejas. así que probé una expresión aritmética:
$ [ 1 + 1 ]
[: +: binary operator expected
$
Probé varias combinaciones diferentes, incluido el prefijo & amp; notación postfix pero nada parecía funcionar. ¿Qué hace esta cosa?
Solución
Se utiliza para evaluar expresiones condicionales .
Es equivalente a (¿posiblemente un enlace simbólico a?) El ejecutable test
.
La página de manual es aquí .
Puede ver esto en muchos scripts de bash:
if [ "$LOGNAME" = "scott" ]
then
echo "Logged in as Scott"
else
echo "incorrect user"
fi
Lo curioso es que el [
no es parte del lenguaje bash, en realidad es un ejecutable cuyo código de retorno es utilizado por el 'IF'. Esta es la razón por la cual el espacio después del [
y su primer argumento es obligatorio: si se omitiera, el script intentaría ejecutar [ " $ LOGNAME "
y falla.
No puede realizar operaciones aritméticas con él: use expr
para eso (consulte aquí ).
Sin embargo, puede probar una amplia gama de propiedades de archivo (¿existe? ¿De qué tipo es?, Etc.), así como utilizar operadores de comparación en cadenas y números.
Otros consejos
test a
==
[ a ]
Es solo azúcar
Editar: para aclarar, esa es la sintaxis condicional, p. [" a " = " a " ]
Otra respuesta ya mencionada es la misma que test
. En bash, también está integrado, por lo que puede obtener ayuda con el help
incorporado ( prueba de ayuda
).