Подтвердить что ты не робот

Значение двойных квадратных скобок в bash

В этом вопросе в ответе от Kyle Brandt конструкция [[ ]] описывается как "встроенная тестовая команда bash". В качестве примера показано следующее.

  if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...

Почему двойные квадратные скобки, буквально [[ ]], необходимы?

4b9b3361

Ответ 1

[[является гораздо более универсальной версией [in bash.

Например, использование тестовой конструкции [[...]], а не [...], может помешать многим логическим ошибкам в сценариях. Например, операторы &, ||, < и > работают в тесте [[]], несмотря на то, что они выдают ошибку в конструкции [].

также, их реализации различны

-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword

Обратитесь здесь за хорошее объяснение

Ответ 2

[[ ]] равны ключевому слову test.

Вы также можете использовать [ ], но [[ ]] несовместим со всеми типами оболочки

Для меня, если я понимаю реальное чувство вопроса, вопрос сам по себе плохо сформулирован.
Эти скобки должны быть здесь не столько для определения порядка, а потому, что для них требуется bash резюме

Изменить

Вопрос изменен, поэтому мой ответ тоже.

[[ ]] используется для [ ], потому что вам не нужно беспокоиться о цитировании левой части теста, который будет читаться как переменная.
Более того, < и > не нужно экранировать