En Bash (y ksh y zsh), si usa corchetes dobles, no necesita entrecomillar las variables para evitar que sean nulas o no definidas.
$ if [ $xyzzy == "x" ]; then echo "True"; else echo "False"; fi
-bash: [: ==: unary operator expected
False
$ if [[ $xyzzy == "x" ]]; then echo "True"; else echo "False"; fi
False
Hay otras ventajas.
Encierre la variable entre comillas dobles.
if [ "$TESTVAR" == "foo" ]
si hace eso y la variable está vacía, la prueba se expande a:
if [ "" == "foo" ]
mientras que si no lo cita, se expande a:
if [ == "foo" ]
que es un error de sintaxis.