Conforme indicado pelo texto, você apenas precisa fazer referência (por exemplo, por $VARNAMEou ${VARNAME}) às variáveis como em um comando shell comum. No entanto, você deve garantir que o shell não os expanda antes.
Aqui estão alguns exemplos para ilustrar isso (supondo export FOO=BAR):
$ echo '$FOO$FOO2' | envsubst
BAR
Como você pode ver, $ FOO2 foi substituído por "", pois não foi definido. Agora podemos restringir essa substituição a apenas $ FOO:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
usar em ""vez de ''levaria a substituição antes que fosse desejado:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Isso equivale à chamada efetiva envsubst "BAR"que não detecta variáveis e, portanto, nenhuma é substituída.)
Como a página man-disse, todas as variáveis mencionadas SHELL-FORMATsão substituídas, para que possamos fazer isso:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Como você pode ver, o SHELL-FORMATé bastante flexível.
Por fim, o parâmetro --variablespermite avaliar quais variáveis são selecionadas para substituição pelo SHELL-FORMAT:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
No exemplo de substituição prematura acima, isso mostraria o erro:
$ envsubst --variables "$FOO"
(empty string returned)
Conforme declarado na manpágina-, envsubstnão processa nenhum stdinput quando --variablespresente.