These are equivalent in bash:
[[ $x == "$y" ]]
[[ $x = "$y" ]]
[ "$x" == "$y" ]
[ "$x" = "$y" ]
The first two $x variables don't have to be quoted. Bash performs word splitting and pathname expansion inside [ but not inside [[:
$ x='a b'
$ [ -s $x ]
-bash: [: a: binary operator expected
$ [[ -s $x ]]
$ [ a = * ]
-bash: [: a: unary operator expected
$ [[ a = * ]]
[[ $x = "$y" ]] is a string comparison but
[[ $x = $y ]] is a pattern matching expression:
$ y='a*'; [[ aa = "$y" ]]; echo $?
$ y='a*'; [[ aa = $y ]]; echo $?
-eq is only meant to be used with integers:
$ [[ x.x -eq x.x ]]
-bash: [[: x.x: syntax error: invalid arithmetic operator (error token is ".x")
$ x=9; [[ "x" -eq 9 ]]; echo $?
See also BashFAQ/031: What is the difference between test, [ and [[ ?.