{string1,string2,...,stringN} {START..END} {START..END..INCR} (Bash 4) PREAMBLE{........}POSTSCRIPTИтак, механизм раскрытия скобок позволяет создавать произвольные строки. Запись состоит из правила в фигурных скобках, приставки (Preamble) и окончания (Postscript). Результатом будет набор из всех возможных комбинаций, заданных правилом в скобках. Каждый из этих результатов будет иметь указанные приставку и окончание. Наиболее частый пример использования это групповое формирование аргументов для команды согласно какой-либо схеме. Раскрытие скобок выполняется до раскрытия переменных. Это крайне важно помнить. Если написать
echo {a,b}$PATHтогда значение переменной будет подставлено не на шаге раскрытия скобок, а позже. Эта запись равносильна записи
echo a$PATH b$PATHТакже это означает, что диапазон вроде {1..200} нельзя записать при помощи переменных {$a..$b}. Как реализовать/обойти это описано в статье, но я опущу описание. [br] Фигурные скобки позволяют реализовать списки строк и диапазоны.
Списки строк.
{string1,string2,...,stringN}Без использования приставки и окончания мы просто получаем список разделенных пробелом строк:
$ echo {I,want,my,money,back} I want my money backПри наличии приставки или окончания получаем следуещее:
$ echo _{I,want,my,money,back} _I _want _my _money _back $ echo {I,want,my,money,back}_ I_ want_ my_ money_ back_ $ echo _{I,want,my,money,back}- _I- _want- _my- _money- _back-The brace expansion is only performed, if the given string list is really a list of strings, i.e. if there's minimum one "," (comma)! Something like {money} doesn't expand to something special, it's really only the text "{money}".