[ это синоним для test. Обрабатывается как и любая другая команда с соответствующими ограничениями. [[ — это расширение Bash (не совместимо с другими оболочками) и так как это внутренняя команда, то имеет несколько больше возможностей. В частности, нет необходимости заключать переменные в кавычки, можно использовать &&, ||, < и > и есть поддержка регулярных выражений через оператор =~. Для подробностей смотрите man bash.