[Bash] Boucles whiles imbriquées ne fonctionnent pas

Résolu/Fermé
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 5 nov. 2014 à 14:40
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 5 nov. 2014 à 14:53
Bonjour,

Je suis entrain de développer un petit script en bash.
A un moment, je me retrouve à devoir imbriquer deux boucles while.


IFS=";"
tel="0"
i=0

#Lire les informations dans le fichier liste.htlm et génère le fichier annuaire.htlm
while read f1 f2 f3 f4; do

USER=$f1
AGE=$f2
SEXE=$f3
DATE=$f4

#Génération d'un numéro de téléphone aléatoire.
#LE PROBLEME VIENT DE LA
while [ $i -le 8 ];do
nombre=$RANDOM;
nombre=$(($nombre%10));
tel="$tel""$nombre";
i=$[$i+1];
done


echo "<html lang="fr"><head><meta charset="UTF-8"></head><body><p>$USER</p><p>Sexe: $SEXE</p><p>Age: $AGE ans</p><p>Tel:$tel<p></body></html>" >> $USER.html
done < liste.txt


L'idée est la suivante :
Je parcours mon fichier liste.txt qui contient des lignes comme ceci :
Aïssatou;15;F;2004
Alassane;7;M;2008
Alienor;23;F;2008
Alienor;24;F;2004
Amira;19;F;2008

Donc je parcours les lignes une par une et j'aimerais que à chaque fois que je parcours une ligne, la boucle qui permet de générer un numéro de téléphone aléatoire se lance !
Hors là, elle se lance lors de la première lecture du fichier, me génère un numéro de tel aléatoire mais ne se relance pas pour les autres lignes du fichier.
J'ai toujours le même numéro de téléphone pour les lignes du fichier, alors que je souhaite avoir un numéro différent pour chacune des personnes.

Une idée du pourquoi la boucle du téléphone ne se relance pas ?
Le reste du code après le tel fonctionne bien.
Merci
A voir également:

1 réponse

patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 125
5 nov. 2014 à 14:53
Solution trouvée :

Créer une fonction qui génère le numéro de téléphone.
Puis appeler la fonction dans la boucle while.

telephonealea(){
tel="0"
i=0
while [ $i -le 8 ];do
nombre=$RANDOM;
nombre=$(($nombre%10));
tel="$tel""$nombre";
i=$[$i+1];
done
}

while read f1 f2 f3 f4; do

USER=$f1
AGE=$f2
SEXE=$f3
DATE=$f4
#Appel de la fonction telephonealea
telephonealea

mail="$USER@unicaen.fr"

echo "<html lang="fr"><head><meta charset="UTF-8"></head><body><p>$USER</p><p>Sexe: $SEXE</p><p>Age: $AGE ans</p><p>Tel:$tel<p><p>Mail:$mail</p></body></html>" >> $USER-$DATE.html
done < liste.txt
0