#1 Le 22/09/2010, à 15:10
- syl2000
(résolut) modifier une chaine de caractère dans un fichier
bonjour
j'ai besoin d'aide pour finir mon script ( afin de permettre à mes élèves de faire des labyrinthes)
#!/bin/sh
i=0
j=3
LandHeight=5
LandWidth=5
while [ "$i" -lt "$j" ] # tant que i < j
do
echo "LandHeight= $LandWidth"
echo "LandWidth=$LandHeight"
LandWidth=`expr $LandWidth + 1`
LandHeight=`expr $LandHeight + 1`
i=`expr $i + 1` #ou i++
java Window
done
Pour le moment j'arrive à relancer le labyrinthe trois fois mais il garde la même taille.
ce que j'aimerai faire c'est prendre les résultats des echo (LandHeight= $LandWidth) qui est incrémenté et le copier à la place du LandHeight=5 dans le fichier labo42.conf
ainsi à chaque boucle mon labyrinthe changerai de taille .
fichier labo42.conf
#Cobra.conf
#ce fichier est le fichier de configuration du jeu cobra
#vous pouvez le modifier à la main, mais il est preferable d'utiliser les options de configuration du jeu
#les lignes commencant par # sont des commentaires
#(ce n'est pas obligatoire mais cela permet une meilleure lisibilite)
#si 2 lignes non commentees decrivent le même parametre, seule la premiere sera prise en compte
#:::::::::::::::::::::::::::::::::::::::::
#:::::::::Configuration Generale:::::::::
#:::::::::::::::::::::::::::::::::::::::::
#LandHeight= indique la hauteur du labyrinthe (nombre de lignes)
#LandWidth= indique la largeur du labyrinthe (nombre de colones)
#SkinBlockSize= indique la taille de block utilisee par la skin (en pixels)
LandHeight=5
LandWidth=5
SkinBlockSize=20
#:::::::::::::::::::::::::::::::::::::::::
#::::::::Configuration du joueurs:::::::::
#:::::::::::::::::::::::::::::::::::::::::
#KeyDir= indique la touche utilisée par le joueur pour aller dans la direction Dir
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
merci
Dernière modification par syl2000 (Le 22/09/2010, à 15:58)
Hors ligne
#2 Le 22/09/2010, à 15:17
- jde3
Re : (résolut) modifier une chaine de caractère dans un fichier
sed est ton ami. Tiré de http://www.lmd.ens.fr/Ressources-Info/Unix-Doc/html/cours-unix-12.html :
sed "s/toto/TOTO/" fichier
va changer la première occurence de la chaîne toto par TOTO (la première chaîne toto rencontrée dans le texte uniquement)
Hors ligne
#3 Le 22/09/2010, à 15:46
- AnsuzPeorth
Re : (résolut) modifier une chaine de caractère dans un fichier
Bjr,
ce qui donnerait un truc du genre:
sed -i "s/\(LandHeight=\).*/\1${LandHeight}/;s/\(LandWidth=\).*/\1${LandWidth}/" labo42.conf
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#4 Le 22/09/2010, à 15:55
- syl2000
Re : (résolut) modifier une chaine de caractère dans un fichier
#!/bin/sh
i=0
j=3
LandHeight=5
LandWidth=5
while [ "$i" -lt "$j" ] # tant que i < j
do
echo "LandHeight=$LandWidth"
echo "LandWidth= $LandHeight"
LandWidth=`expr $LandWidth + 1`
LandHeight=`expr $LandHeight + 1`
i=`expr $i + 1` #ou i++
sed "s/LandHeight=5/LandHeight=$LandWidth/" labo42.conf
sed "s/LandWidth=5/LandWidth= $LandHeight/" labo42.conf
java Window
done
les problèmes
1) les modifications se font dans le terminal mais ne sont pas enregistrées dans le fichier lab42.conf
2) les lignes sed ne sont pas satisfaisantes car les valeurs sont modifiées ainsi
LandHeight=6
LandWidth=5
SkinBlockSize=20
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
LandHeight=5
LandWidth= 6
SkinBlockSize=20
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
LandHeight=7
LandWidth=5
SkinBlockSize=20
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
LandHeight=5
LandWidth= 7
SkinBlockSize=20
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
LandHeight=8
LandWidth=5
SkinBlockSize=20
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
LandHeight=5
LandWidth= 8
SkinBlockSize=20
KeyDown=40
KeyLeft=37
KeyUp=38
KeyRight=39
Dernière modification par syl2000 (Le 22/09/2010, à 15:55)
Hors ligne
#5 Le 22/09/2010, à 15:57
- syl2000
Re : (résolut) modifier une chaine de caractère dans un fichier
merci grâce à vous je suis arrivé à faire se que je voulais
Hors ligne
#6 Le 22/09/2010, à 16:42
- AnsuzPeorth
Re : (résolut) modifier une chaine de caractère dans un fichier
1) les modifications se font dans le terminal mais ne sont pas enregistrées dans le fichier lab42.conf
L'option -i de sed pour écrire le fichier (comme l'exemple que j'ai donné)
2) les lignes sed ne sont pas satisfaisantes car les valeurs sont modifiées ainsi
Là ca vient de toi, c'est toi qui gère les variables
Dernière modification par AnsuzPeorth (Le 22/09/2010, à 16:42)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne