中かっこ拡張の前にコマンド置換を実行するには?

中かっこ拡張の前にコマンド置換を実行するには?

中括弧を拡張する前にコマンド置換を実行したいのですが、次のことはできません。

$ 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フォーマット文字列を提供します
  • .0f小数点以下の桁数が0の浮動小数点数の場合
  • .pdf確かに

(そしてあなたは$()構文を知っています)

関連情報