Comme l'indique le texte, il suffit de référencer (par exemple par $VARNAME
ou ${VARNAME}
) les variables comme dans une commande Shell habituelle. Cependant, vous devez vous assurer que la commande Shell ne les développe pas au préalable.
Voici quelques exemples pour illustrer cela (en supposant que export FOO=BAR
) :
$ echo '$FOO$FOO2' | envsubst
BAR
Comme vous pouvez le voir, $FOO2 a été remplacé par "" car il n'était pas défini. Nous pouvons maintenant limiter ce remplacement à $FOO par :
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
en utilisant ""
au lieu de ''
conduirait à une substitution avant qu'elle ne soit souhaitée :
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Cela équivaut à l'appel effectif envsubst "BAR"
qui ne détecte aucune variable, de sorte qu'aucune n'est remplacée).
En tant que man
-La page de garde indique que toutes les variables qui sont référencées dans la page de garde sont des variables qui ne sont pas référencées dans la page de garde. SHELL-FORMAT
sont remplacés, ce qui nous permet de le faire :
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Comme vous pouvez le constater, le SHELL-FORMAT
est assez flexible.
Enfin, le paramètre --variables
vous permet d'évaluer quelles variables sont sélectionnées pour la substitution par la fonction SHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
Dans l'exemple de la substitution prématurée ci-dessus, cela aurait montré l'erreur :
$ envsubst --variables "$FOO"
(empty string returned)
Comme indiqué dans le man
-page, envsubst
ne traite aucune entrée stdinput lorsque --variables
est présent.