Como realizar a substituição de comandos antes da expansão de chaves?

Como realizar a substituição de comandos antes da expansão de chaves?

Gostaria de realizar a substituição de comandos antes da expansão das chaves, mas não consegui:

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

Como eu posso fazer isso?

Responder1

Você simplesmente precisa usar o evalshell integrado:

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

Para onde evalleva os argumentos passados ​​para ele:

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

e os concatena em um único comando:

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

que é então lido e executado pelo shell.

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

Responder2

você tentou

ls $(seq -f %.0f.pdf 13 20 )
  • -ffornece a string de formato
  • .0fpara 0 dígito decimal flutuante
  • .pdfóbvio

(e você conhece a sintaxe $( ))

informação relacionada