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