Diferencia entre `[[ $a -lt 2 ]]` y `(( $a < 2 ))`

Diferencia entre `[[ $a -lt 2 ]]` y `(( $a < 2 ))`

¿Existe alguna diferencia significativa entre usar [[ $a -lt 2 ]]y (( $a < 2 ))?

Por ejemplo, ¿uno de ellos es más rápido o más compatible con POSIX que el otro?

Respuesta1

Ninguno de los dos es compatible con POSIX. En un shell POSIX, puede utilizar el comando [ "$a" -lt 2 ]o elexpresión $(( a < 2 )).

En bash, el primero es simplemente el comando condicional que admite un superconjunto de expresiones condicionales que [admite, y el segundo es un comando independiente que sale con el estado 0 si la expresión aritmética adjunta no es cero, o 1 en caso contrario. Aparte de la legibilidad, no existe una diferencia significativa entre los dos cuando se usan correctamente.

información relacionada