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 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 smile

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