Bonjour,
Mon objectif est de faire des tests de contrôle sur 3 chaînes de caractères selon leur présence (ou non) dans un fichier, sans oublier aucun cas de figure possible! Pour chaque test, je dois afficher un message de succès ou d'échec sur l'écran, et l'écrire dans un fichier. Et pour me compliquer encore la vie, tous mes tests de contrôle doivent eux-mêmes se situer à l'intérieur d'une grande boucle if/then/else/fi...
Ce que je sais faire « à peu près » : tester la présence ou non d'un seul pattern dans un fichier (merci de corriger si j'ai faux, car je suis encore sûr de rien, Bonjour à: Sve@r, N_BaH et zipe31 ):
Comment faire si je dois faire avec 2 autres patterns, et donc avec toutes les probabilités suivantes (EXP1, EXP2 et EXP3 sont des variables dans lesquelles, j'ai mis les chaînes recherchées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if grep "$EXP1" "myfile" > /dev/null 2>&1 then blah blah else blah blah ... fi
)
1) Les 3 chaînes sont dans mon fichier.
2) Les 3 chaines n'y sont pas.
3) EXP1 seul y est, EXP2 et EXP3 n'y sont pas.
4) EXP2 seul y est, EXP1 et EXP3 n'y sont pas.
5) EXP3 seul y est, EXP1 et EXP2 n'y sont pas.
6) EXP1 et EXP2 y sont, EXP3 n'y est pas
7) EXP1 et EXP3 y sont, EXP2 n'y est pas
8) EXP2 et EXP3 y sont, EXP1 n'y est pas
Mes questions :
1) Ai-je cité tous les cas de combinaisons possibles ?
2) Comment couvrir tous les cas énumérés en utilisant peu de commandes ou en tout cas la méthode la plus élégante possible et surtout la plus courte (économe en nombre de if).
Voici mon grand if dans lequel doivent se situer mes tests de contrôle:
D'avance Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if [ -f myfile ] then cp myfile myfile.old ===> ZONE DE CONTROLE DES CHAINES ==== sed -i.OLD -e "s/^$EXP1$/$DON/" -e "/^$EXP2$/d" -e "/^$EXP2$/d" "myfile" else echo "Le fichier myfile n'existe pas dans $HOME" fi
Partager