Remplacement d'une chaine dans une variable

Résolu/Fermé
sym59 Messages postés 40 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 11 août 2015 - 12 sept. 2013 à 14:38
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 13 sept. 2013 à 08:11
Bonjour,

La question a déjà été posée mais uniquement au niveau de fichiers... Je vous la pose donc pour une variable =)

J'ai actuellement trois variables :
var1=$(echo "chose")
var2=$(echo "truc")
var3=$(echo "je/veux/changer/ce/machin/$var1")

var3 = je/veux/changer/ce/machin/chose

var1 apparait donc dans var3 et je souhaiterais pouvoir l'échanger avec var2 pour avoir :
var3=$(echo "je/veux/changer/ce/machin/$var2")

var3 = je/veux/changer/ce/machin/truc

J'ai donc pensé à cette ligne de code : (qui ne marche pas)
var3=$(echo $var3 | sed 's/$var1/$var2/')

résultat : je/veux/changer/ce/machin/chose


par contre, celle que j'avais trouvé sur le net marche :
var3=$(echo $var3 | sed 's/chose/truc/')

résultat : je/veux/changer/ce/machin/truc


Quelqu'un pourrait m'aider?
Merci !

6 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 12/09/2013 à 15:40
hello
les $(echo ... sont inutiles
les variables ne sont pas résolues entre ', essayer entre "
var3=$(echo $var3 | sed "s/$var1/$var2/")
ou en bash
$ var1="chose"
$ var2="truc"
$ var3="je/veux/changer/ce/machin/$var1"
$ echo $var3
je/veux/changer/ce/machin/chose
$ echo ${var3/$var1/$var2}
je/veux/changer/ce/machin/truc
$
0