Diferencias de comportamiento
Algunas diferencias en Bash 4.3.11:
Recomendación : usar siempre [].
Hay equivalentes POSIX para cada [[ ]]construcción que he visto.
Si te [[ ]]usas:
- perder portabilidad
- obligar al lector a aprender las complejidades de otra extensión bash.
[es solo un comando regular con un nombre extraño, no hay semántica especial involucrada.
¹ Inspirado en la [[...]]construcción equivalente en el shell Korn
² pero falla para algunos valores de ao b(like +o index) y hace una comparación numérica si ay se bparecen a enteros decimales. expr "x$a" '<' "x$b"trabaja alrededor de ambos.
³ y también falla para algunos valores de ao blike !or (.
Bas en bash 3.2 y superior y la compatibilidad proporcionada a bash 3.1 no está habilitada (como con BASH_COMPAT=3.1)
⁵ aunque la agrupación (aquí con el {...;}grupo de comandos en lugar del (...)cual se ejecutaría una subshell innecesaria) no es necesaria ya que los operadores de shell ||y &&(en oposición a los operadores ||y && [[...]]o los operadores -o/ -a [) tienen la misma prioridad. Entonces [ a = a ] || [ a = b ] && [ a = b ]sería equivalente.
[[a él, el código es bueno y claro, pero recuerde ese día cuando portará sus scripts en el sistema con un shell predeterminado que no es ,bashokshetc.[es más feo, engorroso, pero funciona comoAK-47en cualquier situación.