[
es un comando integrado de shell en bash y en zsh:
$ type [
[ is a shell builtin
De la documentación de Shell Builtin Commands :
Los comandos incorporados están contenidos dentro del propio shell . Cuando el nombre de un comando incorporado se usa como la primera palabra de un comando simple (vea Comandos simples ), el shell ejecuta el comando directamente, sin invocar otro programa. Los comandos incorporados son necesarios para implementar funcionalidades imposibles o inconvenientes de obtener con utilidades separadas.
La documentación oficial ( $ help test
) solo permite utilizar =
:
STRING1 = STRING2
Es cierto si las cadenas son iguales.
Entonces, la expresión correcta sería:
$ [ "a" = "a" ] && echo yes
yes
Lo que sucede es que bash es un poco menos estricto. Apoyar al ==
operador con [
parece ser una extensión bash y no se recomienda usarlo:
cadena1 == cadena2
cadena1 = cadena2
Es cierto si las cadenas son iguales. Cuando se usa con el comando [[, esto realiza la coincidencia de patrones como se describió anteriormente (vea Construcciones condicionales ).
'=' debe usarse con el comando de prueba para la conformidad POSIX.
Si desea usar ==
, debe usar la [[
palabra clave:
$ [[ "a" == "a" ]] && echo yes
yes
Tenga en cuenta que [[
es menos portátil (no es POSIX). Pero tanto bash como zsh lo admiten.
$PATH
. y==
no es unatest
sintaxis válida para/usr/bin/[
anway. Solo=
esta bien.