Как выполнить подстановку команд перед раскрытием фигурных скобок?

Как выполнить подстановку команд перед раскрытием фигурных скобок?

Я хотел бы выполнить замену команд перед раскрытием фигурных скобок, но не смог:

$ ls {$(seq -s , 13 20)}.pdf
ls: cannot access {13,14,15,16,17,18,19,20}.pdf: No such file or directory

Как мне это сделать?

решение1

Вам просто нужно использовать evalвстроенную функцию оболочки:

$ eval ls {$(seq -s , 13 20)}.pdf

Куда evalберёт переданные ему аргументы:

ls {$(seq -s , 13 20)}.pdf

и объединяет их в одну команду:

ls {13,14,15,16,17,18,19,20}.pdf

который затем считывается и выполняется оболочкой.

$ eval ls {$(seq -s , 13 20)}.pdf
13.pdf  14.pdf  15.pdf  16.pdf  17.pdf  18.pdf  19.pdf  20.pdf

решение2

попытался ли ты

ls $(seq -f %.0f.pdf 13 20 )
  • -fдает строку формата
  • .0fдля 0 десятичных цифр с плавающей точкой
  • .pdfочевидный

(и вы знаете о синтаксисе $( ) )

Связанный контент