В чем разница между

Возможный дубликат:
с использованием одиночной или двойной скобки – bash

Когда следует использовать один кронштейн? [

Когда следует использовать двойные скобки? [[

Оба POSIX совместимы?

  • Как привести текст HEREDOC в переменную сценария оболочки?
  • Что такое переносимый (POSIX) способ достижения замещения процесса?
  • Элемент сортировки POSIX Awk
  • Что означает «системный вызов», если не реализация на языке программирования?
  • «Rm. *» Когда-либо удаляет родительский каталог?
  • Является ли это поведение хвоста в командах группировки, заданных POSIX?
  • Является ли суб-оболочка той же самой, что и дочерняя оболочка
  • Почему нет API-интерфейса Unix?
  • 2 Solutions collect form web for “В чем разница между”

    Единая скобка является традиционной формой и часто реализуется как внешняя команда. Двойная скобка – расширение bash (и ksh и zsh), не входит в POSIX и имеет преимущество более чистого синтаксиса (см. Ниже) и не использует отдельный процесс.

    Одна из синтаксических различий заключается в том, что операторы < и > (обратите внимание: не стандартный POSIX) не нужно экранировать или цитировать, чтобы избежать чтения в качестве оператора перенаправления. Кроме того, [ требует некоторых приемов, если одна из строк может быть пустой или начинаться с дефиса. Вот почему вы видите, что скрипты делают что-то вроде [ "x$ASD" == xValue ] тогда как с bash они могут просто использовать [[ $ASD == Value ]] . Обратите внимание, что трюк «x» не является строго необходимым, если команда POSIX-совместимая команда тестирует только одну вещь, для получения более подробной информации см. Этот вопрос .

    В FAQ по bash содержится дополнительная информация о различиях. На это также был дан ответ на другом сайте обмена стеками.

    Только [ ( test ) находится в POSIX. Вы не найдете [[ указанный в POSIX, кроме как зарезервированное слово, которое могут использовать реализации. Bash действительно использует [[ как расширенный тестовый оператор, и если вы пишете скрипты, предназначенные специально для bash , всегда используйте [[ потому что он намного эффективнее, чем [ и безопаснее использовать его. Если, однако, вы ориентируетесь на POSIX sh , вам нужно использовать [ , и обязательно указывать аргументы и не использовать более 4 аргументов для [ .

    Linux и Unix - лучшая ОС в мире.