Bonjour,
Dans un script bash de création de de graph avec graphviz, j'essaie de faire la recherche de 2 chaînes de caractères dans un fichier qui se nomme graph.dot
Voici la fin de mon fichier graph.dot:
subgraph cluster_BatH {
bgcolor=aquamarine;
label = "Bat_H";
}
"node156" -- "node128"[taillabel="7", headlabel="24"];
"node156" -- "node155"[taillabel="49", headlabel="50"];
"node155" -- "node144"[taillabel="49", headlabel="50"];
"node155" -- "node156"[taillabel="50", headlabel="49"];
}
Voici un extrait de mon script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #chaines à rechercher dans le fichier graph.dot
lien1="\"node$host\" -- \"node$Remotehost\"[taillabel=\"$LocalPort\",headlabel=\"$RemotePort\"]\;"
lien2="\"node$Remotehost\" -- \"node$host"[taillabel="$RemotePort",headlabel="$LocalPort"];"
echo "lancement recherche des chaines"
grep "$lien2" graph.dot || grep "lien1" graph.dot
resultat=$(echo $?)
echo "test présence= $resultat"
if [ "$resultat" -eq 0 ];
then
echo "lien1 ou lien2 trouvé"
else
#insertion de la ligne suivante à la fin du fichier graph.dot
echo "\"node$host\" -- \"node$Remotehost\"[taillabel=\"$LocalPort\",headlabel=\"$RemotePort\"];">>graph.dot
fi |
Or mon test if semble ne pas fonctionner car mon grep ne sait pas rechercher mes 2 chaînes "complexes". Je dois avoir un problème de syntaxe !
La valeur des variables est correcte car si je fais un echo de $lien1 et $lien2 j'ai bien à un moment une correspondance avec une ligne existante dans graph.dot mais la commande grep ne la voit pas
Même en remplacant ma chaine de $lien1 par "node156" -- "node128"[taillabel="7", headlabel="24"];" grep de voit rien!
J'ai essayé d'échapper avec \ tous les " à l'intérieur des " des extrémités, mais en vain.
J'espère m'exprimer comme il faut pour me faire comprendre!
Merci pour votre aide!
Partager