Comme indiqué par le texte, il vous 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 le shell ne les développe pas au préalable.
Voici quelques exemples pour illustrer cela (en supposant export FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
Comme vous pouvez le voir, $ FOO2 a été remplacé par "" car il n'a pas été défini. Nous pouvons maintenant limiter ce remplacement à seulement $ FOO en:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
utiliser à la ""
place de ''
entraînerait une substitution avant qu'elle ne soit voulue:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Cela revient à l'appel effectif envsubst "BAR"
qui ne détecte aucune variable, donc aucune n'est remplacée.)
Comme le man
dit la page, toutes les variables référencées SHELL-FORMAT
sont remplacées, nous pouvons donc même le faire:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Comme vous pouvez le voir, 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 SHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
Dans l'exemple de substitution prématurée ci-dessus, cela aurait montré l'erreur:
$ envsubst --variables "$FOO"
(empty string returned)
Comme indiqué dans la page man
, envsubst
ne traite aucun stdinput lorsqu'il --variables
est présent.
Le verbiage est un peu confus. Pour reformuler le texte d'aide de manière plus méticuleuse:
Donc, pour répondre explicitement à votre question: préfixez le nom de la variable avec
$
.la source