Pela página do manual:
envsubst [OPTION] [SHELL-FORMAT]
Se for fornecido um SHELL-FORMAT, apenas as variáveis de ambiente referenciadas no SHELL-FORMAT serão substituídas; caso contrário, todas as referências de variáveis de ambiente que ocorrem na entrada padrão são substituídas.
Onde strings SHELL-FORMAT são "strings com referências a variáveis de shell no formato $variable
ou ${variable}
[...] nome da variável devem consistir apenas em caracteres ASCII alfanuméricos ou sublinhados, não devem começar com um dígito e não ser vazios; caso contrário, essa referência de variável é ignorado ". .
Portanto, é preciso passar os nomes das respectivas variáveis envsubst
em uma string no formato de shell (obviamente, eles precisam ser escapados / citados para serem passados literalmente para envsubst
). Exemplo:
arquivo de entrada, por exemplo infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
e alguns valores como
export VAR1="one" VAR2="two" VAR3="three"
então correndo
envsubst '${VAR1} ${VAR3}' <infile
ou
envsubst '${VAR1},${VAR3}' <infile
ou
envsubst '${VAR1}
${VAR3}' <infile
saídas
VAR1=one
VAR2=${VAR2}
VAR3=three
Ou, se você preferir barra invertida:
envsubst \$VAR1,\$VAR2 <infile
produz
VAR1=one
VAR2=two
VAR3=${VAR3}