#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
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
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 !
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
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
Dernière modification par erlik (Le 10/07/2008, à 13:40)
Je ne suis pas un geek! Je suis un être humain!
Hors ligne