Разница между `]` и `(($ a <2))`

Есть ли существенная разница между использованием [[ $a -lt 2 ]] и (( $a < 2 )) ?

Например, один из них более быстрый или более совместимый с POSIX, чем другой?

Также не совместим с POSIX. В оболочке POSIX вы можете использовать команду [ "$a" -lt 2 ] или выражение $(( a < 2 )) .

В bash первая – это условная команда, поддерживающая надмножество условных выражений, которая [ поддерживает, а вторая является автономной командой, которая выходит со статусом 0, если закрытое арифметическое выражение отличное от нуля или 1 в противном случае. Помимо читаемости, при правильном использовании нет существенной разницы между ними.