Ho un variabile che contiene questo tipo di stringa:Come si espandono le variabili in una variabile bash senza carattere jolly espandibile?
var='$FOO/bar/baz*'
e voglio sostituire la $ FOO variabile dal suo contenuto. Tuttavia, quando faccio
var=$(eval "echo $var")
La variabile viene sostituito, ma la stella è anche sostituito in modo che var
ora contiene ogni possibile corrispondenza nel mio file system (come se scheda premuto in un guscio). ad esempio, se $ FOO contiene/home, var
conterrà "/home/bar/baz1.sh /home/bar/baz2.sh /home/bar/baz.conf"
Come sostituire la variabile senza espandere i caratteri jolly?
Vedi anche http://mywiki.wooledge.org/TemplateFiles –
Se il vostro obiettivo è quello di disattivare solo globbing, 'set -f' lo farà. Se il vostro obiettivo è quello di fare la valutazione del modello di sicurezza ... beh, non c'è nulla di _safe_ sui modelli in bash, dal momento che non è possibile disabilitare la sostituzione di comando; cioè, un modello che contiene '$ (rm -rf" $ HOME ")' farà proprio questo. –