Como lo indica el texto, solo tiene que hacer referencia (por ejemplo, por $VARNAME
o ${VARNAME}
) a las variables como en un comando de shell habitual. Sin embargo, debe asegurarse de que el shell no los expanda de antemano.
Aquí hay algunos ejemplos para ilustrar esto (suponiendo export FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
Como puede ver, $ FOO2 ha sido reemplazado por "" porque no estaba definido. Ahora podemos restringir ese reemplazo a solo $ FOO al:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
usar en ""
lugar de ''
llevaría a la sustitución antes de que se desee:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Esto equivale a la llamada efectiva envsubst "BAR"
que no detecta variables, por lo que ninguna se reemplaza).
Como man
dice la página, todas las variables a las que se hace referencia SHELL-FORMAT
se reemplazan, por lo que incluso podemos hacer esto:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Como puede ver, el SHELL-FORMAT
es bastante flexible.
Finalmente, el parámetro le --variables
permite evaluar qué variables se seleccionan para su sustitución por SHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
En el ejemplo de sustitución prematura de arriba, esto habría mostrado el error:
$ envsubst --variables "$FOO"
(empty string returned)
Como se indica en la página man
, envsubst
no procesa ninguna entrada estándar cuando --variables
está presente.
La palabrería es un poco de confusión. Para reformular el texto de ayuda de forma más meticulosa:
Entonces, para responder su pregunta explícitamente: Prefije el nombre de la variable con
$
.fuente