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

Code
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
Fichier : # 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
 
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
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.
J'ai essayé de comprendre l'erreur mais en vain, pourriez vous m'éclairer sur le sujet?

Merci d'avance,
Bonne soirée !