echo $ PATH imprime littéralement “$ PATH” comme résultat

affiche de première fois lurker longtemps.

Donc, je veux parcourir un fichier texte, qui contient une commande par ligne. Je veux lire chaque ligne, exécuter chaque commande, puis enregistrer la sortie dans un fichier.

La partie du script qui me pose problème est la suivante:

echo COMMAND LOG > $dest/command.log echo ====== >> $dest/command.log while IFS= read -rv do echo ====== >> $dest/command.log echo COMMAND: $v >> $dest/command.log echo ======OUTPUT====== >> $dest/command.log $v >> $dest/command.log echo ====== >> $dest/command.log done < "$commands" 

Cela fonctionne très bien pour tout sauf “echo $ PATH” qui génère:

 ====== COMMAND: echo $PATH ======OUTPUT====== $PATH 

Y a-t-il un moyen de le faire fonctionner correctement? Merci d’avance.

Il est attendu, car vous récupérez un fichier ligne par ligne, vous avez des chaînes, pas des variables. $v est une chaîne "$PATH" , c’est tout.

Vous devez eval votre chaîne pour obtenir la valeur de la variable associée:

 echo COMMAND: $(eval $v) >> $dest/command.log