“[]” Frente a “[[]]” en el shell de Bash [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Los corchetes dobles [[]] son ​​preferibles a los corchetes simples [] en Bash? 7 respuestas

Esto puede ser respondido ya pero lo voy a preguntar de todos modos. Tengo dos versiones de un script (comp.sh) -

#!/bin/sh
export tDay=$(date '+%Y%m%d')
newfile="filename_$tDay"
filename="filename_20120821100002.csv"
echo $newfile $filename
if [ $filename = *$newfile* ]
then
  echo "Matched"
else
  echo "Not Matched!"
fi

Output:
$ ./comp.sh
filename_20120821 filename_20120821100002.csv
Not Matched!

Y

#!/bin/sh
export tDay=$(date '+%Y%m%d')
newfile="filename_$tDay"
filename="filename_20120821100002.csv"
echo $newfile $filename
if [[ $filename = *$newfile* ]]
then
  echo "Matched"
else
  echo "Not Matched!"
fi

$ comp.sh
filename_20120821 filename_20120821100002.csv
Matched

¿Podría alguien explicarme por qué la diferencia?

También - bajo qué circunstancias debería[ ] ser usado vs.[[ ]] ¿y viceversa?

Respuestas a la pregunta(3)

Su respuesta a la pregunta