I would have put this in a comment, but am not yet allowed to.
One difference I have noticed between [] and [[]], is that in the former it is possible to use multiple comparisons.
The same comparison throws a syntax error in [[]]
a=1
b=2
This works:
$ [ "$a" -gt 0 -a "$b" -gt "$a" ] && { echo '[b>a>0]'; }
[b>a>0]
This does not work:
$ [[ $a -gt 0 -a $b -gt $a ]] && { echo '[[b>a>0]]'; }
-bash: syntax error in conditional expression
-bash: syntax error near `-a'
I haven't really dug in to see why that is so, but when using multiple comparisons, I use [].