Remplacer uniquement des variables spécifiques par envsubst

J'essaie d'effectuer le rlocation de variable d'environnement via envsubst , mais je veux seulement replace des variables spécifiques.

D'après les documents, je devrais pouvoir dire à envsubst de ne replace que certaines variables mais je ne parviens pas à le faire.

Par exemple, si j'ai un file contenant:

 VAR_1=${VAR_1} VAR_2=${VAR_2} 

comment dois-je exécuter envsubst pour qu'il remplace seulement la reference à ${VAR_1} ?

Avant d'appeler envsubst utilisez export et utilisez des VAR1 pour récupérer VAR1 modifié. Comme dans:

 export VAR1='somevalue' 

Pour plus de détails, veuillez consulter:

Comment substituer des variables shell dans des files text complexes

Par la page de manuel:

 envsubst [OPTION] [SHELL-FORMAT] 

Si un SHELL-FORMAT est donné, seules les variables d'environnement référencées dans SHELL-FORMAT sont substituées; sinon toutes les references de variables d'environnement apparaissant dans l'input standard sont remplacées.

Où les strings SHELL-FORMAT sont des strings avec des references aux variables shell sous la forme $variable ou ${variable} […] Les noms de variables doivent être constitués uniquement de caractères ASCII alphanumériques ou de soulignement, ne pas commencer par un chiffre et être non vides; sinon une telle reference de variable est ignorée. " .
Donc, on doit passer les noms des variables respectives à envsubst dans une string de format shell (évidemment, ils doivent être échappés / quoted pour être transmis littéralement à envsubst ). Exemple:

file d'input par exemple infile :

 VAR1=${VAR1} VAR2=${VAR2} VAR3=${VAR3} 

et certaines valeurs comme

 export VAR1="one" VAR2="two" VAR3="three" 

puis en cours

 envsubst '${VAR1} ${VAR3}' <infile 

ou

 envsubst '${VAR1},${VAR3}' <infile 

ou

 envsubst '${VAR1} ${VAR3}' <infile 

les sorties

 VAR1=one VAR2=${VAR2} VAR3=three 

Ou, si vous préférez la barre oblique inverse:

 envsubst \$VAR1,\$VAR2 <infile 

produit

 VAR1=one VAR2=two VAR3=${VAR3}