J'essaie de remplacer les variables d'environnement par le biais envsubst
, mais je veux seulement remplacer des variables spécifiques.
D'après la documentation, je devrais pouvoir dire envsubst
de ne remplacer que certaines variables, mais je ne parviens pas à le faire.
Par exemple, si j'ai un fichier contenant:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
comment dois-je exécuter envsubst
pour qu'il ne remplace que la référence à ${VAR_1}
?
shell
environment-variables
João Angelo
la source
la source
Par la page de manuel:
Où les chaînes SHELL-FORMAT sont des "chaînes avec des références à des variables de shell sous la forme
$variable
ou${variable}
[...] ignoré. " .Donc, il faut passer les noms des variables respectives
envsubst
dans une chaîne de formatage (évidemment, ils doivent être échappés / cités pour pouvoir être passés littéralement àenvsubst
). Exemple:fichier d'entrée par exemple
infile
:et des valeurs comme
puis courir
ou
ou
les sorties
Ou, si vous préférez une barre oblique inverse:
produit
la source
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
là:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile