Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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....

smile

Hors ligne