Mohu použít proměnné uvnitř {} rozšíření bez apelování na eval ? Pokud ano, jak?
Toto nefunguje:
$ 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
Funguje s eval :
$ eval ls 1.{$extensions}
1.bar 1.foo
Přijatá odpověď:
Expanze závorky nastává velmi brzy během expanze (ve skutečnosti první věc), před proměnnou expanzí. Chcete-li provést expanzi složené závorky na základě výsledku proměnné expanze, musíte použít eval .
Stejného efektu můžete dosáhnout i bez eval pokud vytvoříte extensions zástupný vzor namísto vzoru složené závorky. Nastavte extglob možnost aktivovat vzory podobné ksh.
shopt -s extglob
extensions='@(foo|bar)'
ls 1.$extensions
Pkexec – Jak nastavit vlastní časový limit pro Auth_admin_keep při psaní zásad Pkexec?
Jak přidat/aktualizovat soubor do existujícího archivu Tar.gz?