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-совместим.