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?