"eval"なしで{}拡張で変数を使用できますか?

{}を引き付けずに拡張子で変数を使用できますかeval?それでは、どうすればいいですか?

これはうまくいきません:

$ touch 1.foo 1.bar
$ ls 1.{foo,bar}
1.bar  1.foo
$ extensions=foo,bar
$ ls 1.{$extensions}
ls: cannot access 1.{foo,bar}: No such file or directory

適用対象eval:

$ eval ls 1.{$extensions}
1.bar  1.foo

ベストアンサー1

サポート拡張が非常に早く行われました拡張(事実最初)変数の拡張前です。変数拡張結果に対して中括弧拡張を実行するには、を使用する必要がありますeval

evalextensions中かっこパターンの代わりにワイルドカードパターンを使用すると、同じ効果が得られます。extglob有効化オプションの設定kshに似たモード

shopt -s extglob
extensions='@(foo|bar)'
ls 1.$extensions

おすすめ記事