
Ich möchte vor der Klammernerweiterung eine Befehlsersetzung durchführen, konnte dies aber nicht:
$ ls {$(seq -s , 13 20)}.pdf
ls: cannot access {13,14,15,16,17,18,19,20}.pdf: No such file or directory
Wie kann ich es tun?
Antwort1
Sie müssen lediglich das eval
integrierte Shell-Feature verwenden:
$ eval ls {$(seq -s , 13 20)}.pdf
Dabei eval
werden die ihm übergebenen Argumente übernommen:
ls {$(seq -s , 13 20)}.pdf
und verkettet sie zu einem einzigen Befehl:
ls {13,14,15,16,17,18,19,20}.pdf
welches dann von der Shell gelesen und ausgeführt wird.
$ eval ls {$(seq -s , 13 20)}.pdf
13.pdf 14.pdf 15.pdf 16.pdf 17.pdf 18.pdf 19.pdf 20.pdf
Antwort2
Hast du es versucht
ls $(seq -f %.0f.pdf 13 20 )
-f
gibt den Formatstring aus.0f
für 0 Dezimalstellen Float.pdf
offensichtlich
(und Sie kennen die $()-Syntax)