#bash
#bash
Вопрос:
Смежные расширения в виде фигурных скобок приводят к декартову произведению их элементов:
$ echo {a,b}{c,d}{e,f}
ace acf ade adf bce bcf bde bdf
Я хочу знать, является ли это специальной функцией расширений в виде фигурных скобок, или это вытекает из следующего правила или любого другого правила, задокументированного в man bash
:
Шаблоны, которые должны быть расширены в виде фигурных скобок, принимают форму необязательной преамбулы, за которой следует либо серия строк, разделенных запятыми, либо выражение последовательности между парой фигурных скобок, за которым следует необязательный postscript. Преамбула имеет префикс к каждой строке, содержащейся в фигурных скобках, а затем к каждой результирующей строке добавляется postscript, разворачивающийся слева направо.
Если это вытекает из этого правила, как именно это работает?
Мне кажется, что вам понадобится отдельное правило, такое как:
Когда преамбула сама по себе является расширением в виде фигурных скобок, каждый элемент расширяется относительно расширения в виде фигурных скобок вправо, а затем эти результаты объединяются в порядке слева направо
То есть {a,b}{c,d}
это объединение a{c,d}
и b{c,d}
.
Но я не вижу ни одного такого правила в man bash
описании «Расширений в виде фигурных скобок», которое явно оправдывало бы такое поведение.
Я что-то упускаю?
Комментарии:
1. Я полагаю, что это просто слева направо.
{a,b}{c,d}{e,f}
это расширение в виде фигурных скобок{a,b}
без префикса и приписки{c,d}{e,f}
, приводящее кa{c,d}{e,f} b{c,d}{e,f}
. Каждое из этих двух расширений в виде фигурных скобок расширяется, что приводит кac{e,f} ad{e,f} bc{e,f} bd{e,f}
, и каждое из этих четырех расширяется до конечного результатаace acf ade adf bce bcf bde bdf
.2. Вероятно, это ответ на ваш вопрос, он довольно подробный: unix.stackexchange.com/questions/402315 /…
3. (Отсутствующим правилом в моей интерпретации было бы то, что расширение в виде фигурных скобок применяется рекурсивно к результату любого расширения в виде фигурных скобок до тех пор, пока не останется выражений в виде фигурных скобок. Это правило в некоторой степени подразумевается тем фактом, что вложенные выражения в виде фигурных скобок явно поддерживаются.)
4. @chepner это все же так? смежные BES не являются вложенными. итак, afaict, требуемое правило отсутствует
5. Я бы сказал, недокументированные , а не недокументированные . Имейте в виду, что
bash
документация в лучшем случае информативна, определенно не нормативна . Это не должно быть спецификацией.