Come indicato dal testo, devi solo fare riferimento (ad esempio da $VARNAME
o ${VARNAME}
) le variabili come in un normale comando di shell. Tuttavia, è necessario assicurarsi che la shell non li espanda in anticipo.
Ecco alcuni esempi per illustrare questo (supponendo export FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
Come puoi vedere, $ FOO2 è stato sostituito da "" in quanto non è stato definito. Ora possiamo limitare tale sostituzione a soli $ FOO:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
l'utilizzo ""
invece di ''
porterebbe alla sostituzione prima di volerlo:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Ciò equivale alla chiamata effettiva envsubst "BAR"
che non rileva variabili, quindi nessuna viene sostituita.)
Come man
diceva -page, tutte le variabili a cui si fa riferimento SHELL-FORMAT
vengono sostituite, quindi possiamo anche fare questo:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Come puoi vedere, SHELL-FORMAT
è abbastanza flessibile.
Infine, il parametro --variables
consente di valutare quali variabili sono selezionate per la sostituzione mediante SHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
Nell'esempio di sostituzione prematura dall'alto questo avrebbe mostrato l'errore:
$ envsubst --variables "$FOO"
(empty string returned)
Come indicato nella man
pagina, envsubst
non elabora alcuno stdinput quando --variables
è presente.