#1 Le 04/03/2022, à 21:41
- philoeil
[RESOLU] Boucle d'attente qui ne marche pas toujours
Bonjour,
Pouvez-vous m'aider à comprendre comment corriger cette boucle d'attente qui parfois bloque ?
Le code test extrait pour l'exemple
#!/bin/bash
attend()
{
printf ", une touche pour interrompre.
"
while : ;do
for i in {0..15}
do
if [ $i -eq 15 ]
then
echo -en "\r-------------------------------\r"
else
echo -ne " ."
sleep 0.1
fi
done
done
}
progress()
{
printf "Attente une touche + ENTREE ."
attend & PROGR_PID=$!
while [[ -z ${repon} ]]
do
read -t 1 repon
done
unset repon
kill $PROGR_PID
}
echo "essai 1 marche"
progress
echo "Essai 2 echec"
while IFS='§' read -r C1 C2 C3 C4 C5 C6; do
progress
done < TmpTrouveMD5
Le resultat :
$ ./TProgr_For2.sh
essai 1 marche
Attente une touche + ENTREE ., une touche pour interrompre.
. .---------------------------.
Essai 2 echec
Attente une touche + ENTREE ., une touche pour interrompre.
. . . . . . . .d . . .--------.
.d . . . .--------------------
. . .d . . .
. . . . . . . .^C-------------
Merci de votre aide
Dernière modification par philoeil (Le 04/03/2022, à 22:42)
Hors ligne
#2 Le 04/03/2022, à 21:57
- Watael
Re : [RESOLU] Boucle d'attente qui ne marche pas toujours
salut,
pour simplifier, les "boucles read" sont imbriquées, et lisent les mêmes données.
il faut rediriger le fichier vers un descripteur de fichier différent, et lire ce descripteur :
while IFS='§' read -u 3 -r C1 C2 C3 C4 C5 C6
do
progress
done 3< TmpTrouveMD5
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 04/03/2022, à 22:16
- philoeil
Re : [RESOLU] Boucle d'attente qui ne marche pas toujours
Bonjour,
Merci Watael
C'est parfait, encore une fois tu me sauves....
Hors ligne