GNU/Linux >> Belajar Linux >  >> Linux

Gunakan Variabel Di Dalam {} Ekspansi Tanpa `eval`?

Bisakah saya menggunakan variabel di dalam {} ekspansi tanpa menarik eval ? Jika demikian, bagaimana?

Ini tidak berhasil:

$ 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

Ini bekerja dengan eval :

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

Jawaban yang Diterima:

Ekspansi penjepit terjadi sangat awal selama ekspansi (hal pertama, sebenarnya), sebelum ekspansi variabel. Untuk melakukan ekspansi brace pada hasil ekspansi variabel, Anda perlu menggunakan eval .

Anda dapat mencapai efek yang sama tanpa eval jika Anda membuat extensions pola wildcard bukan pola brace. Setel extglob opsi untuk mengaktifkan pola seperti ksh.

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

Linux
  1. Cara menggunakan Podman di dalam Kubernetes

  2. Cara menggunakan Podman di dalam wadah

  3. Bagaimana Menunda Ekspansi Variabel?

  1. Mengizinkan Pengguna Menggunakan Sudo Tanpa Kata Sandi?

  2. Gunakan Ts Tanpa Kehilangan Nilai Keluar?

  3. Mengapa Ekspansi Variabel Tanpa $ Bekerja Dalam Ekspresi?

  1. Gunakan Ekspansi Parameter Untuk Memodifikasi Output Ekspansi Lain?

  2. Ekspansi &Variabel Bash Brace?

  3. Cara yang Tidak Biasa untuk Menggunakan Variabel Di Dalam Skrip Bash