[RESOLU]gerer les commentaires (#) dans le parsing d'un fichier de conf
Bonjour,
Je cherche a automatiser la generation de fichiers de conf et pour cela, je dois parser des fichiers contenant des infos.
Or pour etre propre, je souhaite commencer par ne pas traiter les lignes commencants par # de facon a pouvoir commenter mon fichier.
Mais, mes cours de shell sont bien loin, et je n'arrive pas a traiter le # sans mélanger le caractere # et ce qu'il represente en systeme (un truc vide).
Voici ce que j'ai ecrit pour selectionner les lignes qui m'interressent lors du traitement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#!/bin/sh
while read ligne
do
echo $ligne | cut -c 1 | read first_car
if [ $first_car='#' ]
then
echo "$first_car"
else
echo ok!
fi
done < test.txt
echo fin |
et le résultat est peu probant car il réagit comme s'il n'y avait que des commentaires d'un part et d'autre part, il sort sur la sortie 7 lignes vides correspondant a mes 7 lignes du fichier de test. Sur lequel poourtant il n'y a que 3 commentaires.
Quelqu'un a une idée de la marche a suivre svp?
:cry:
script shell problématique
Nom du script: generateur de dhcpd.conf
Compatible avec: Bash
Descriptif: permet de generer la fin du fichier dhcpd.conf afin de ne pas avoir a editer les hosts systématiquement en parsant un fichier contenant un suite de données sous la forme MAC=XX:XX:XX:XX:XX
host=nom de l'hote
Pré-requis:Aucun
Bon, j'essaye d'avancer, et je galere pas mal.
j'ai écris ça.
C'est sans doute pas tres optimisé , et loin d'être parfaitement propre, mais en plus, ca ne marche pas... :(
Donc le but ultime sera de generer un bout de fichier contenant les mac et les hosts pour completer /etc/dhcp3/dhcp.conf
Et déjà, pour commencer, mon test de confirmation d'ecrasement me sort systematiquement si je commente pas le exit 0. (ligne 5)
Ensuite, je n'arrive pas a comparer ma valeur obtenue par le wc avec le x dans la boucle while (ligne 17)
Merci a ceux qui auraient deux minutes pour m'aider a redresser mon pov script :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
1 #!/bin/sh
2 echo 'Ce script va écraser le fichier actuel /etc/dhcp3/MAC.conf.'
3 echo 'Voulez-vous continuer? (O/N, par défaut N)'
4 read confirmation
5 if [ $confirmation!=O ]
6 then
7 # exit 0
8 echo je sors
9 fi
10 if [ -f /etc/dhcp3/MAC.conf ]
11 then
12 mv /etc/dhcp3/MAC.conf /etc/dhcp3/MAC.conf-old
13 fi
14 echo #fichier de conf $date >> /etc/dhcp3/MAC.conf
15 wc -l test.txt | cut -c 1 | read nbligne
16 x=0
17 until [ $x -eq $nbligne ]
18 do
19 x=$x+1
20 grep -v ^# $1 | grep host | colrm 1 5 | read tabhost[$x]
21 grep -v ^# $1 | grep MAC | colrm 1 4 | read tabMAC[$x]
22
23 done
24
25 echo ${tabhost[*]}
26 echo ${tabMAC[*]} |