Bash - командный интерпретатор GNU Bourne


Замена выражений в фигурных скобках


Замена выражений в фигурных скобках - это механизм генерации произвольных строк. Он аналогичен подстановке имен файлов, но генерируемые имена не обязательно должны существовать. Шаблоны в фигурных скобках имеют вид необязательного префикса, за которым идет набор строк через запятую в фигурных скобках, после чего - необязательный суффикс. Префикс добавляется в начало каждой строки, содержащейся в фигурных скобках, а затем к каждой полученной так (слева направо) строке добавляется суффикс.

Выражения в фигурных скобках могут быть вложенными. Результаты каждой замены не сортируются; порядок слева направо сохраняется. Например, конструкция a{d,c,b}e заменяется на 'ade ace abe'.

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

Корректное выражение в фигурных скобках должно содержать незамаскированные открывающую и закрывающую фигурную скобку и, по крайней мере, одну незамаскированную запятую. Любое некорректное выражение в фигурных скобках остается неизменным. Символ { или , может маскироваться обратной косой для предотвращения его интерпретации на этапе замены выражений в фигурных скобках.

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

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

или

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

Замена выражений в фигурных скобках вносит небольшое рассогласование с историческими версиями sh. Командный интерпретатор sh не рассматривает открывающую и закрывающую фигурные скобки в слове специальным образом и просто сохраняет их. Командный интерпретатор bash удаляет фигурные скобки из слова при замене. Например, слово, введенное в sh как file{1,2}, остается без изменений. Это же слово заменяется парой слов file1 file2 после замены выражения в фигурных скобках в bash. Если требуется полная совместимость с sh, командный интерпретатор bash

надо запускать с опцией или отключать с помощью опции +B команды (см. раздел "" ниже).



Содержание раздела