中括弧展開の前にコマンド置換を実行するにはどうすればよいでしょうか?

中括弧展開の前にコマンド置換を実行するにはどうすればよいでしょうか?

中括弧展開の前にコマンド置換を実行したいのですが、できませんでした:

$ 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

これらを 1 つのコマンドに連結します。

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フォーマット文字列を与える
  • .0f0桁の小数点
  • .pdf明らか

(そして、$( ) 構文について知っている)

関連情報