[
and
[[
are both command but like
cp and mv are different, same situation between [ and [[.
test command (you can write it also [ ) has been already in Bourneshell. Testing command (I mean [[ ) has done later, maybe it was David Korn ?.
Ex. I'm so old sh user, I use always old test command (sometimes I write it using [ ).
I have never need to use [[ ]] testing. If test is not enough, I like more case pattern to use comparing strings. So read manual (bash or ksh) and try to see the light between [ and [[.