На самом деле они не являются токенами в смысле лексера, за исключением простых скобок (
и )
.
{
и }
в частности вообще не нуждаются в цитировании:
$ echo {Hello World}
{Hello World}
(, за исключением случаев, когда у вас есть {
или }
в качестве первого слова команды, где они интерпретируются как ключевые слова; или если у вас есть {a,b}
в одном слове с запятой или двойной -точкой между ними, где это раскрытие фигурной скобки.)
[]
также является специальным только в качестве символов глобуса, и если нет совпадающих имен файлов,поведение по умолчанию — просто оставить слово как -.
Но в любом случае, чтобы избежать их, вы обычно заключаете их в одинарные или двойные -кавычки:
echo "(foo bar)"
echo '(foo bar)'
Или просто экранируйте соответствующие символы один -на -один, хотя это немного утомительно:
echo \(foo\ bar\)
Или любое другое сочетание, которое вам нравится:
echo \(fo"o bar"')'
См.: