bash – 如何在大括号扩展之前执行命令替换?

我想在大括号扩展之前执行命令替换,但不能:

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

我该怎么做?

最佳答案
您只需要使用内置的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

转载注明原文:bash – 如何在大括号扩展之前执行命令替换? - 代码日志