
中括弧展開の前にコマンド置換を実行したいのですが、できませんでした:
$ 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
明らか
(そして、$( ) 構文について知っている)