GNU/Linux >> Linux の 問題 >  >> Linux

`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

承認された回答:

ブレースの拡張は、可変拡張の前の拡張中の非常に早い段階(実際には最初に)に発生します。変数展開の結果に対して中括弧展開を実行するには、evalを使用する必要があります 。

evalがなくても同じ効果を得ることができます extensionsを作成した場合 ブレースパターンの代わりにワイルドカードパターン。 extglobを設定します kshのようなパターンをアクティブにするオプション。

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

Linux
  1. Kubernetes内でPodmanを使用する方法

  2. コンテナ内でのPodmanの使用方法

  3. ユーザーがパスワードなしでSudoを使用できるようにしますか?

  1. パラメータ展開を使用して別の展開の出力を変更しますか?

  2. Bashブレースの拡張と変数?

  3. 変数の拡張を延期する方法は?

  1. 出口値を失うことなくTsを使用しますか?

  2. $なしの変数展開が式で機能するのはなぜですか?

  3. sftp を壊さずに .bashrc を使用する