Probleme sur la Boucle WHILE
b.hamichi
-
b.hamichi -
b.hamichi -
Bonjour,
J'utilise deux boucles « for » imbriquées pour comparer deux tableaux de chaînes de caractères sous SH:
for ((i=0;i<=$nb_lignesA;i++));
do
for ((j=0;j<=$nb_lignesB;j++))
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
done
done
J'aimerai remplacer les deux boucles par 2 While imbriquées
i=0; j=0
while [ "$i" -le "$(($nb_lignesA-1))" ]
do
while [ "$j" -le "$(($nb_lignesB-1))" ]
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
j=$(($j+1))
done
i=$(($i+1))
done
Mais cela ne fonctionne pas !!!!, le resultat n'est pas le meme (sur la boucle FOR, le resultat est OK, sur le WHILE le resultat est NOK) !!!
Pourriez-vous m'aider SVP, Merci
J'utilise deux boucles « for » imbriquées pour comparer deux tableaux de chaînes de caractères sous SH:
for ((i=0;i<=$nb_lignesA;i++));
do
for ((j=0;j<=$nb_lignesB;j++))
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
done
done
J'aimerai remplacer les deux boucles par 2 While imbriquées
i=0; j=0
while [ "$i" -le "$(($nb_lignesA-1))" ]
do
while [ "$j" -le "$(($nb_lignesB-1))" ]
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
j=$(($j+1))
done
i=$(($i+1))
done
Mais cela ne fonctionne pas !!!!, le resultat n'est pas le meme (sur la boucle FOR, le resultat est OK, sur le WHILE le resultat est NOK) !!!
Pourriez-vous m'aider SVP, Merci
A voir également:
- Probleme sur la Boucle WHILE
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Réseaux sociaux
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
4 réponses
Enfaite, sur la premiere boucle, le programme fonctionne correctement sans i=0, le resultat de la comparaison des deux tableaux est OK.
Le probleme c'est bien la boucle WHILE, je ne comprends pas et pourtant j'ai juste changé une boucle par une autre mais pas le corps de la boucle !!!!
Je me tappe la tete depuis 2 jours, merci pour votre aide
Le probleme c'est bien la boucle WHILE, je ne comprends pas et pourtant j'ai juste changé une boucle par une autre mais pas le corps de la boucle !!!!
Je me tappe la tete depuis 2 jours, merci pour votre aide
Bonjour,
Merci XIOLA pour votre patience !! Effectivement la 2eme boucle fonctionne avec "j=0"
for ((i=0;i<=$nb_lignesA;i++))
do
j=0
while [ "$j" -le "$nb_lignesB" ] #for ((j=0;j<=$nb_lignesB;j++))
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
j=$(($j+1))
done
done
Et si je fais la meme chose avec la premiere boucle, cela ne fonctionne toujours pas !!!!
i=0
while [ "$i" -le "$nb_lignesA" ]
do
j=0
while [ "$j" -le "$nb_lignesB" ] #for ((j=0;j<=$nb_lignesB;j++))
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
j=$(($j+1))
done
i=$(($i+1))
done
avec ou bien sans l'initialisation de i=0, le programme bloc !!!
Merci
Merci XIOLA pour votre patience !! Effectivement la 2eme boucle fonctionne avec "j=0"
for ((i=0;i<=$nb_lignesA;i++))
do
j=0
while [ "$j" -le "$nb_lignesB" ] #for ((j=0;j<=$nb_lignesB;j++))
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
j=$(($j+1))
done
done
Et si je fais la meme chose avec la premiere boucle, cela ne fonctionne toujours pas !!!!
i=0
while [ "$i" -le "$nb_lignesA" ]
do
j=0
while [ "$j" -le "$nb_lignesB" ] #for ((j=0;j<=$nb_lignesB;j++))
do
if [ "${tabA[i]}" = "${tabB[j]}" ];
then total=$(($total+1))
continue 2
elif [ $j = $nb_lignesB ]; then
echo "Problem in ligne : $i"
nb_lignesC=$(($nb_lignesC+1))
fi
j=$(($j+1))
done
i=$(($i+1))
done
avec ou bien sans l'initialisation de i=0, le programme bloc !!!
Merci