Bonjour,
Ayant récemment passé un examen sur ordinateur concernant l'utilisation des scripts shells sur Linux , je me retrouve devant un problème bien étrange.
Je vous présente le code ainsi que son utilisation et un exemple de fichier allant avec.
Nom du script: équipe_victoire
Compatible avec: Bash
Descriptif: permet de trouver le nombre de victoire d'une équipe en fonction d'une année et d'un nom d'équipe.
Exemple d'exécution : ./equipe_victoire 2014 Lyon fichier_equipe
CodeFichier : # Format équipe;ligue;annee;victoires
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #! /bin/bash # tata.sh if [ $# -ne 3 ] then echo "Parametre differents de 3" else equipe=$2 saison=$1 for i in $(cat $3) do bak=$IFS echo $i #placer pour tester la valeur de i avant le changement de l'IFS IFS=';' echo $i #placer pour tester la valeur de i après le changement de l'IFS read a b c d <<< $i if [ $a = "$equipe" ] && [ $c = "$saison" ] then echo "Nombre de victoire de $equipe à la saison $saison: $d" break fi IFS=$bak done fi
Alors, je sais que le code n'est pas dès plus beau et qu'on peut passer par des grep mais je n'y avais pas pensé. Cependant lorsque je l'ai testé lors de mon contrôle il se trouve qu'il m'affichait bien le bon résultat avec l'équipe voulu et le nombre de ses victoires. Mais le point étrange et qu'aujourd'hui quand je retest le code il ne marche plus du tout , après le changement de l'IFS $i n'est plus égale à "équipe;ligue;année;victoires" mais à "équipe ligue année victoires" ce qui change tout car l'IFS étant changé le read voit cette phrase comme une seule valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Lyon;1;2014;21 Paris;1;2014;29 Marseille;1;2014;16 Monaco;1;2014;18 Lyon;1;2010;20 Paris;1;2010;32 Marseille;1;2010;28 Monaco;1;2010;28 Ajjacio;2;2014;21 Saint-Etienne;2;2014;29 Real;2;2014;16 Guimgang;2;2010;19 Ajjacio;2;2010;22 Saint-Etienne;2;2010;30 Real;2;2010;20 Guimgang;2;2010;10
J'ai essayé de comprendre l'erreur mais en vain, pourriez vous m'éclairer sur le sujet?
Merci d'avance,
Bonne soirée !
Partager