Por la página del manual:
envsubst [OPTION] [SHELL-FORMAT]
Si se proporciona un SHELL-FORMAT, solo se sustituyen las variables de entorno a las que se hace referencia en SHELL-FORMAT; de lo contrario, se sustituyen todas las referencias de variables de entorno que ocurren en la entrada estándar.
Donde las cadenas SHELL-FORMAT son "cadenas con referencias a variables de shell en la forma $variable
o ${variable}
[...] Los nombres de las variables deben consistir únicamente en caracteres ASCII alfanuméricos o de subrayado, no comenzar con un dígito y no ser vacíos; de lo contrario, dicha referencia de variable es ignorado ". .
Por lo tanto, uno tiene que pasar los nombres de las variables respectivas envsubst
en una cadena de formato de shell (obviamente, deben escaparse / citarse para que se pasen literalmente a envsubst
). Ejemplo:
archivo de entrada, por ejemplo infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
y algunos valores como
export VAR1="one" VAR2="two" VAR3="three"
luego corriendo
envsubst '${VAR1} ${VAR3}' <infile
o
envsubst '${VAR1},${VAR3}' <infile
o
envsubst '${VAR1}
${VAR3}' <infile
salidas
VAR1=one
VAR2=${VAR2}
VAR3=three
O, si prefiere la barra invertida:
envsubst \$VAR1,\$VAR2 <infile
produce
VAR1=one
VAR2=two
VAR3=${VAR3}