Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/11/2014, à 11:34

wolf85kunst

Comment Interpreter des variables dans un fichier [RESOLU]

Bonjour à tous,

Je rencontre un soucis concernant l'interprétation de variables bash présente dans un fichier texte. Je m'explique :

Je crée mon fichier :

echo "Ceci est un $var" >>monfichier.txt

J'initialise ma variable :

var='test'

Je stock le contenu du fichier dans une variable :

fic=`cat monfichier.txt`

Lors de l’exécution de la commande : cat fic ; j'aimerai obtenir "Ceci est un test", mais cette commande me retourne : "Ceci est un $var"...

Auriez-vous un idée ?
Merci pour votre aide.

Dernière modification par wolf85kunst (Le 11/02/2015, à 13:29)


Les raisonnables ont duré, les passionnés ont vécu.
-- 10.04 Lucid Lynx --

Hors ligne

#2 Le 27/11/2014, à 12:58

Hizoka

Re : Comment Interpreter des variables dans un fichier [RESOLU]

Salut

echo "Ceci est un $var" >>monfichier.txt

Ta commande va changer le nom de la variable par sa valeur ou rien si var n'existe pas.
Cela va écrire "Ceci est un " dans ton fichier monfichier.txt

echo "Ceci est un \$var" >> monfichier.txt

La, ça va écrire :  "Ceci est un $var"

Le problème c'est que il ne sait pas qu'il faut interpréter le $var, il croit que ce n'est qu'un texte...

Alors on peut lui dire manuellement de remplacer les textes $var par sa valeur en traitant les lignes une par une :

while read line
do
 echo "${line//\$var/${var}}"
done < monfichier.txt

Sinon on peut utiliser eval, mais c'est dangereux... le echo est tres important pour eviter des risques.

while read line
do
 eval "echo ${line}"
done < monfichier.txt

Sans l'echo si jamais ton texte est rm -r *, eval exécutera la commande...
ou plus court et prenant en compte les lignes multiples :

eval """echo "${fic//$'\n'/@@@}" """ | sed "s/@@@/\n/g"

Donc au final

echo "1 - Ceci est un \$var" >> monfichier.txt
echo "2 - Ceci est un \$var" >> monfichier.txt

while read line
do
 echo "${line//\$var/${var}}"
done < monfichier.txt

#fic=`cat monfichier.txt`
fic=$(<monfichier.txt)
eval """echo "${fic//$'\n'/@@@}" """ | sed "s/@@@/\n/g"

Dernière modification par Hizoka (Le 27/11/2014, à 13:13)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 30/11/2014, à 11:42

Hizoka

Re : Comment Interpreter des variables dans un fichier [RESOLU]

wolf85kunst => cela te va-t-il ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 10/02/2015, à 15:04

wolf85kunst

Re : Comment Interpreter des variables dans un fichier [RESOLU]

Merci beaucoup pour ta réponse @Hizoka ! C'est parfait pour moi smile


Les raisonnables ont duré, les passionnés ont vécu.
-- 10.04 Lucid Lynx --

Hors ligne

#5 Le 10/02/2015, à 17:26

Hizoka

Re : Comment Interpreter des variables dans un fichier [RESOLU]

chouette, tu peux ajouter un petit [resolu] dans ton titre de topic alors wink


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne