GNU/Linux >> Linux Esercitazione >  >> Linux

Usa variabili all'interno di {} Espansione senza `eval`?

Posso usare variabili all'interno di {} espansione senza fare appello a eval ? Se sì, come?

Questo non funziona:

$ 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

Funziona con eval :

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

Risposta accettata:

L'espansione del tutore avviene molto presto durante l'espansione (prima cosa, infatti), prima dell'espansione variabile. Per eseguire l'espansione delle parentesi sul risultato di un'espansione di una variabile, è necessario utilizzare eval .

Puoi ottenere lo stesso effetto senza eval se fai extensions un modello di caratteri jolly invece di un modello di parentesi graffe. Imposta il extglob opzione per attivare modelli simili a ksh.

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

Linux
  1. Come usare dd in Linux senza distruggere il tuo disco

  2. Come usare Podman all'interno di Kubernetes

  3. Come usare Podman all'interno di un contenitore

  4. Utilizzare l'espansione dei parametri per modificare l'output di un'altra espansione?

  5. Come differire l'espansione variabile?

Come utilizzare le variabili in Ansible Playbook

Come utilizzare le variabili negli script della shell

Come utilizzare ISPConfig e Seafile senza modifiche manuali ai file

Come usare il comando echo senza Newline

Come usare "yum downloadonly" per scaricare un pacchetto senza installarlo

Come utilizzare Linux Bash Shell in Windows 10?