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 09/07/2008, à 15:00

erlik

[resolu] modifier une variable dans un fichier conf

hello

Je suis en train de faire un petit script, qui lit les variables enregistrées dans un fichier conf du type:

ARG1=aaf
ARG2=fef
ARG3=ahi
[...]
ARGn=xxxxx

Jusqu'a maintenant, pour modifier le fichier conf, je faisais un truc du style

echo ARG1=$ARG1 > ./fichier.conf
echo "ARG2=$ARG2" >> ./fichier.conf
echo "ARG3=$ARG3" >> ./fichier.conf
[....]
echo "ARGn=$ARGn" >> ./fichier.conf

Je voudrais maintenant modifier une seule variable, par ex, ARG2, sans avoir a réécrire le fichier en entier.
C'est possible ? ....

Dernière modification par erlik (Le 09/07/2008, à 15:59)


Je ne suis pas un geek! Je suis un être humain!

Hors ligne

#2 Le 09/07/2008, à 15:07

philou8237

Re : [resolu] modifier une variable dans un fichier conf

oui, cat et sed sont tes amis smile

regarde du coté du man de sed, et teste des commandes du styles :

cat ./fichier.conf | sed -se 's///'

Hors ligne

#3 Le 09/07/2008, à 15:17

Totor

Re : [resolu] modifier une variable dans un fichier conf

regarde ici

Dernière modification par Totor (Le 09/07/2008, à 15:20)


-- Lucid Lynx --

Hors ligne

#4 Le 09/07/2008, à 15:35

erlik

Re : [resolu] modifier une variable dans un fichier conf

merci a vous 2
j'avais pas pensé a sed... sans doute parce que j'aime pas les regex ....


Je ne suis pas un geek! Je suis un être humain!

Hors ligne

#5 Le 09/07/2008, à 15:41

philou8237

Re : [resolu] modifier une variable dans un fichier conf

halala ! les regexp c bon ! mangez en ! smile

Dernière modification par philou8237 (Le 09/07/2008, à 15:41)

Hors ligne

#6 Le 09/07/2008, à 17:52

erlik

Re : [resolu] modifier une variable dans un fichier conf

mouais ... si tu aime ça .........

bon, maintenant, faut que je trouve comment recuperer les arguments commencant par une chaine particuliere de caractères $chaine ....
je me plonge ds man sed ......

Dernière modification par erlik (Le 09/07/2008, à 18:17)


Je ne suis pas un geek! Je suis un être humain!

Hors ligne

#7 Le 09/07/2008, à 18:43

nicolas66

Re : [resolu] modifier une variable dans un fichier conf

Une page pour tester ses regexp : http://rexv.org/


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#8 Le 09/07/2008, à 18:54

Totor

Re : [resolu] modifier une variable dans un fichier conf

nicolas66 a écrit :

Une page pour tester ses regexp : http://rexv.org/

pas mal ! merci !


-- Lucid Lynx --

Hors ligne

#9 Le 09/07/2008, à 22:07

erlik

Re : [resolu] modifier une variable dans un fichier conf

et une autre question:
comment verifier la presence ( ou pas ) d'un groupe de caractères dans une chaine ? ....

bon, je vais qd meme expliquer le script que je fais, ça sera plus simple.
C'est un script qui liste les dossiers d'un repertoire. Il genere , via zenity, une liste des dossiers. Si le nom du dossier est present dans une chaine MODS ( enregistrée ds un fichier.conf) , la checkbox correspondante de zenity est cochée. Quand on valide, la chaine MODS est modifiée.

Voila le code que j'ai deja ecrit.

    if [ ! -d ${MODS_DIR} ]; then
      mkdir ${MODS_DIR}
      TEXT="Le dossier des mods ${MODS_DIR} n'existant pas, il vient d'être créé. Veuillez déplacer vos mods dans ce répertoire."
    fi   

    list_mods_dirs=`find ${MODS_DIR} -mindepth 1 -maxdepth 1 -type d`

    LIST=`echo $list_mods_dirs | sed "s|${MODS_DIR}\([a-zA-Z0-9_]\+\)| FALSE ${MODS_DIR}\1 \1 |g"`
    
    
    MODS=$(zenity --list --checklist --height=300 --width=300 \
      --title="FreeSpace2" \
      --text="Selectionnez les Mods que vous voulez activer. $TEXT" \
      --column="" --column="" --column="Mods" \
      --separator=" " \
      --hide-column=2 \
      $LIST 

    )
  
    MODS=`echo $MODS | sed "s|${MODS_DIR}| -mod ${MODS_DIR}|g"`
    sed -i "s|MODS=.*|MODS=\"${MODS}\"|g" $CONFIGURATION_FILE

mon but est remplacer cette ligne :
LIST=`echo $list_mods_dirs | sed "s|${MODS_DIR}\([a-zA-Z0-9_]\+\)| FALSE ${MODS_DIR}\1 \1 |g"`

de maniere a tester un a un les répertoires renvoyés de $list_mods_dirs , et voire s'il est present dans la variable $MODS
si oui il renvoie TRUE, si non, FALSE

EDIT:
résolu avec sed big_smile

Dernière modification par erlik (Le 10/07/2008, à 13:40)


Je ne suis pas un geek! Je suis un être humain!

Hors ligne