Bash: раскрытие скобок - порядок обработки команд

Андрей Волков

Андрей Волков

Системное, сетевое администрирование +DBA. И немного программист!))  Профиль автора.

Поддержка раскрытия скобок в оболочке Bash уже давно основывается на аналогичном свойстве оболочки С shell. В от­личие от символов подстановки имен файлов, раскрытие ско­бок имеет исключительно текстовый характер. В частности, слова, образующиеся при раскрытии скобок, совсем не обяза­тельно должны совпадать с именами существующих файлов. Имеются следующие формы раскрытия скобок.

рrе{Х, У[, Z...] }post

Раскрывается до preXpost, preYpost и т.д.

pre{ start. . end[. . incr] }post

где start и end обозна­чают целые числа или одиночные буквы, a incr — целое число. Оболочка расширяет эту конструкцию до полно­го диапазона в пределах от start до end, увеличивая целое число incr, если оно указывается.

Постфиксный и префиксный тексты в обеих формах необя­зательны. В числовом выражении пределы start и end вместе или по отдельности могут предваряться одним или более на­чальным нулем. А результаты раскрытия скобок дополняются нулями до максимальной ширины пределов start и end. Обо­лочка Bash игнорирует начальные нули в целом числе incr, всегда интерпретируя его как десятичное значение.

Раскрытие скобок может быть вложенным, а его результа­ты — не отсортированными. Раскрытие скобок выполняется прежде других видов раскрытия выражений, а открывающие и закрывающие фигурные скобки не должны заключаться в ка­вычки, чтобы оболочка Bash смогла распознать их. Подстанов­ки команд при раскрытии скобок игнорируются оболочкой Bash. Чтобы избежать конфликта с подстановкой параметров, раскрытие скобок не должно начинаться с последовательности символов $ {.

# раскрыть текстуально, без сортировки
$ echo hi{DDD,BBB,CCC,AAA}there
hiDDDthere hiBBBthere hiCCCthere hiAAAthere
# раскрыть и найти совпадение с именами
# файлов chi, ch2, appl, арр2
$ Is {ch,app}?
# раскрыть до mv info info.old
$ mv info{,.old}
# простая числовая подстановка
$ echo 1 to 10 is {1..10}
1 to 10 is 1 2 3 4 5 6 7 8 9 10
# числовая подстановка с приращением
$ echo 1 to 10 by 2 is {1..10..2}
1 to 10 by 2 is 1 3 5 7 9
# числовая подстановка с дополнением нулями
$ echo 1 to 10 with zeros is (01..10}
1 to 10 with zeros is 01 02 03 04 05 06 07 08 09 10

 

 

Вас заинтересует / Intresting for you:

Спецсимволы в последовательнос...
Спецсимволы в последовательнос... 2373 просмотров Stas Belkov Tue, 29 Oct 2019, 15:13:02
Команда man Linux: чтение стра...
Команда man Linux: чтение стра... 1443 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 09:36:51
Оболочка (shell) Linux: bash, ...
Оболочка (shell) Linux: bash, ... 4089 просмотров Андрей Волков Wed, 09 Jan 2019, 14:53:54
10 команд Linux для мониторинг...
10 команд Linux для мониторинг... 4502 просмотров Андрей Васенин Mon, 31 May 2021, 14:21:55
Войдите чтобы комментировать

VaaPa аватар
VaaPa ответил в теме #10308 2 года 4 мес. назад
Андрей, объяснили на пальцах. Спасибо! Поймет даже ребенок))