Diferença entre `[[ $a -lt 2 ]]` e `(( $a < 2 ))`

Diferença entre `[[ $a -lt 2 ]]` e `(( $a < 2 ))`

Existe alguma diferença significativa entre usar [[ $a -lt 2 ]]e (( $a < 2 ))?

Por exemplo, um deles é mais rápido ou mais compatível com POSIX que o outro?

Responder1

Nenhum dos dois é compatível com POSIX. Em um shell POSIX, você pode usar o comando [ "$a" -lt 2 ]ou oexpressão $(( a < 2 )).

Em bash, o primeiro é simplesmente o comando condicional que suporta um superconjunto de expressões condicionais que [suporta, e o último é um comando independente que sai com status 0 se a expressão aritmética incluída for diferente de zero, ou 1 caso contrário. Além da legibilidade, não há diferença significativa entre os dois quando usados ​​corretamente.

informação relacionada