我想在大括号扩展之前执行命令替换,但不能:
$ 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
内置的 shell:
$ eval ls {$(seq -s , 13 20)}.pdf
eval
传递给它的参数在哪里:
ls {$(seq -s , 13 20)}.pdf
并将它们连接成一个命令:
ls {13,14,15,16,17,18,19,20}.pdf
然后由 shell 读取并执行。
$ 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
明显的
(并且您了解 $( ) 语法)