Sobes.tech
Junior — Middle

Каква е разликата между използването на единични [] и двойни [[]] в bash?

sobes.tech AI

Отговор от AI

В bash се използват единични скоби [] и двойни [[]] за условия, но между тях има важни разлики:

  • [] е стандартен POSIX-совместим тест, който изпълнява командата test. Той е ограничен в синтаксиса и изисква внимателно екраниране и кавички.

  • [[]] е разширение на bash (и на някои други обвивки), което поддържа по-мощен синтаксис:

    • Позволява използването на логически оператори &&, || вътре в условното изразяване.
    • Поддържа регулярни изрази с оператора =~.
    • Не изисква строго екраниране на променливите, което намалява проблемите с интервалите.

Пример:

if [ "$var" = "value" ]; then
  echo "Обикновен тест"
fi

if [[ $var == v* ]]; then
  echo "Използване на шаблон с [[ ]]"
fi

Обобщение: [[]] е по-гъвкав и удобен за писане на сложни условия в bash, но не е POSIX-совместим.