Bash (および ksh と zsh) では、二重角かっこを使用する場合、変数を引用符で囲んで変数が null または未設定になるのを防ぐ必要はありません。
$ 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
他にも利点があります。
変数を二重引用符で囲みます。
if [ "$TESTVAR" == "foo" ]
それを行い、変数が空の場合、テストは次のように展開されます:
if [ "" == "foo" ]
引用しない場合は、次のように展開されます:
if [ == "foo" ]
これは構文エラーです。