Il existe un utilitaire qui permet la substitution de variables d'environnement: il s'agit de envsubst. Franchement, je ne connaissais pas cet utilitaire jusqu'à ce que je me heurte au problème suivant: substitution de variables dans une commande sed, lorsque le script avec les instructions de sed est un fichier (voir article précédent)
Expérimentons cet utilitaire. Tout d'abord je crée des variables d'environnement (dans un terminal):
export var1=Titine var2=Toto var3=Riri
Le mot export est nécessaire ou sinon on crée des variables du shell.
Ensuite je lance l'utilitaire en tapant envsubst suivi d'un appui sur ENTER.
Le curseur n'est pas après l'invite de commande: le système attend une action de ma part car envsubst renvoie vers la sortie standard (stdout), après traitement, le texte qui lui est fourni en entrée. Et rien ne lui est fourni.
Allons-y! L'entrée standard est dans notre cas le clavier.
Je tape le texte
$var2 aime $var1
suivi de ENTER pour envoyer. Aussitôt le retour apparaît à l'écran:
Je peux continuer à procéder, puis terminer avec CTRL-D, ce qui ramène le curseur après l'invite de commande:
Ce que j'ai tapé à l'écran je peux aussi le mettre dans un fichier appelé avant et lancer la commande:
envsubst < avant
$var2 aime $var1
mais $var3 aime aussi $var1
Je peux aussi créer le fichier après comme ceci:
envsubst < avant > après
Rien n’apparaît à l'écran puisque la sorte standard a été redirigée vers le fichier après.
Je peux aussi indiquer quelles sont les variables à considérer:
$var1 joue avec $var2
$var1 va au restaurant