I found this on the web and hope it benefits you.
[[ expression ]]
Similar to the test and [ ... ] commands , with the following exceptions:
· Field splitting and file name generation are not performed on arguments.
· The -a (and) and -o (or) operators are replaced with &&
and ||, respectively.
· Operators (e.g., -f, =, !, etc.) must be unquoted.
· The second operand of != and = expressions are patterns
(e.g., the comparison in [[ foobar = f*r ]] succeeds).
· There are two additional binary operators: < and > which
return true if their first string operand is less than,
or greater than, their second string operand, espectively.
· The single argument form of test, which tests if the
argument has non-zero length, is not valid - explicit
operators must be always be used,
e.g., instead of [ str ] use [[ -n str ]]
· Parameter, command and arithmetic substitutions are performed
as expressions are evaluated and lazy expression
evaluation is used for the && and || operators. This
means that in the statement [[ -r foo && $(< foo) = b*r ]]
the $(< foo) is evaluated if and only if the file foo
exists and is readable.