Conforme indicado pelo texto, você apenas precisa fazer referência (por exemplo, por $VARNAME
ou ${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-FORMAT
sã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 --variables
permite 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 man
página-, envsubst
não processa nenhum stdinput quando --variables
presente.