Is there any significant difference between using [[ $a -lt 2 ]]
and (( $a < 2 ))
?
For example, is one of them faster or more POSIX compliant than the other?
Is there any significant difference between using [[ $a -lt 2 ]]
and (( $a < 2 ))
?
For example, is one of them faster or more POSIX compliant than the other?
Neither is POSIX-compatible. In a POSIX shell, you can use the command [ "$a" -lt 2 ]
or the expression $(( a < 2 ))
.
In bash
, the former is simply the conditional command supporting a superset of the conditional expressions that [
supports, and the latter is a standalone command that exits with status 0 if the enclosed arithmetic expression is non-zero, or 1 otherwise. Other than readability, there is no significant difference between the two when used properly.
(( ))
and $(( ))
would perhaps make it easier to mix other arithmetic in, if that's ever needed?
– ilkkachu
Oct 04 '16 at 21:22
[
available in any shell? If there would be a shell where [
is not built-in then $(( ))
could be significant faster.
– rudimeier
Oct 04 '16 at 22:30
[
can be external but in practice it's always built in.
– Gilles 'SO- stop being evil'
Oct 05 '16 at 00:12
(( $a < 2 ))
is a valid command inbash
, distinct from the expression$(( $a < 2 ))
. – chepner Oct 04 '16 at 21:12