Estoy tratando de realizar la sustitución de variables de entorno envsubst
, pero solo quiero reemplazar variables específicas.
De los documentos, debería poder decir envsubst
que solo reemplace ciertas variables, pero no puedo hacerlo.
Por ejemplo, si tengo un archivo que contiene:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
¿Cómo debo ejecutar envsubst
para que solo reemplace la referencia ${VAR_1}
?
shell
environment-variables
João Angelo
fuente
fuente
Por la página del manual:
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 aenvsubst
). Ejemplo:archivo de entrada, por ejemplo
infile
:y algunos valores como
luego corriendo
o
o
salidas
O, si prefiere la barra invertida:
produce
fuente
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
entonces:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile