![Разница между `[[ $a -lt 2 ]]` и `(( $a < 2 ))`](https://rvso.com/image/95775/%D0%A0%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83%20%60%5B%5B%20%24a%20-lt%202%20%5D%5D%60%20%D0%B8%20%60((%20%24a%20%3C%202%20))%60.png)
Есть ли существенная разница между использованием [[ $a -lt 2 ]]
и (( $a < 2 ))
?
Например, один из них быстрее или более совместим со стандартом POSIX, чем другой?
решение1
Ни один из них не совместим с POSIX. В оболочке POSIX вы можете использовать команду [ "$a" -lt 2 ]
иливыражение $(( a < 2 ))
.
В bash
, первая — это просто условная команда, поддерживающая надмножество условных выражений, которое [
поддерживает , а вторая — это отдельная команда, которая завершается со статусом 0, если заключенное в ней арифметическое выражение не равно нулю, или 1 в противном случае. За исключением читабельности, между ними нет существенной разницы при правильном использовании.