Spec-Zone.ru › Bash

Расширение фигурных скобок

Расширение фигурных скобок — это механизм, позволяющий генерировать произвольные строки. Этот механизм похож на расширение имён файлов (см. Расширение имён файлов), но генерируемые имена файлов не обязательно должны существовать. Шаблоны для расширения фигурных скобок имеют вид необязательной префиксной части, за которой следует либо ряд строк, разделённых запятыми, либо выражение последовательности между парой фигурных скобок, за которой следует необязательная постскрипт. Префиксная часть добавляется к каждой строке, заключённой в фигурные скобки, а постскрипт добавляется к каждой полученной строке, расширяя слева направо.

Расширения фигурных скобок могут быть вложенными. Результаты каждой расширенной строки не сортируются; порядок слева направо сохраняется. Например,

bash$ echo a{d,c,b}e
ade ace abe

Выражение последовательности имеет вид {x..y[..incr]}, где x и y — это целые числа или буквы, а incr, необязательный инкремент, — целое число. Когда используются целые числа, выражение расширяется до каждого числа между x и y включительно. Префикс ‘0’ перед целыми числами может быть использован для принудительного задания одинаковой ширины каждого члена. Если x или y начинаются с нуля, оболочка пытается заставить все сгенерированные члены содержать одинаковое количество цифр, дополняя нулями при необходимости. Если используются буквы, выражение расширяется до каждой буквы лексически между x и y включительно, используя локаль по умолчанию C. Обратите внимание, что x и y должны быть одного типа (целое число или буква). Если указан инкремент, он используется как разность между каждым членом. По умолчанию инкремент равен 1 или -1, в зависимости от ситуации.

Расширение фигурных скобок выполняется до любого другого расширения, и любые символы, являющиеся специальными для других расширений, сохраняются в результате. Это строго текстовый процесс. Bash не применяет никакого синтаксического толкования к контексту расширения или тексту между фигурными скобками.

Правильно сформированное расширение фигурных скобок должно содержать необрамлённые открывающие и закрывающие фигурные скобки и, по крайней мере, одну необрамлённую запятую или корректное выражение последовательности. Любое неправильно сформированное расширение фигурных скобок остаётся без изменений.

Фигурная скобка { или ‘,’ могут быть экранированы обратным слэшем, чтобы предотвратить их интерпретацию как часть выражения расширения фигурных скобок. Для предотвращения конфликтов с расширением параметров, строка ‘${’ не рассматривается как подходящая для расширения фигурных скобок и препятствует расширению фигурных скобок до закрывающей ‘}’.

Этот конструкт обычно используется как сокращение, когда общий префикс строк, подлежащих генерации, длиннее, чем в приведённом выше примере:

mkdir /usr/local/src/bash/{old,new,dist,bugs}

или

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API