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 06/03/2022, à 17:35

philoeil

redirection provoque une erreur d'affichage une solution ?

Bonjour,

Dans un script j'avais un affichage que je ne comprenais pas
j'ai isolé les lignes pertinentes qui reproduisent le phénomène ci-dessous
Je ne comprends pas comment éviter cet affichage

Le script exemple produisant l'erreur :

#!/bin/bash
attend()
{
   
 exec 2>"$TermTTY"   # Suspend la redirection d'erreur
  exec 1>"$TermTTY" # re affiche les commande suivante sur stdout et interrompt l'envoi de stdout au  journal developpeur (Commun mode Verbeux ou pas)
while : ;do
   for i in {0..11}  
   do     
         if [ $i -eq 11 ]
         then
            echo -en "\r----------------------   \r"
         else
            echo -ne " ." 
            sleep 0.3
         fi
   done
done

}

progress()
{
# printf "Attente1 une touche + ENTREE ."  # NE s'aficherait pas en mode non verbeux

 exec 2>"$TermTTY"   # Suspend la redirection d'erreur
 exec 1>"$TermTTY" # re affiche les commande suivante sur stdout et interrompt l'envoi de stdout au  journal developpeur (Commun mode Verbeux ou pas)
attend & PROGR_PID=$!

  echo -e ".... ENTREE pour continuer"
        2>&1 read repon
  unset repon
echo "le processus $PROG_PID va etre tué"

 exec 5>&1  # Lie le descripteur de fichier #5 avec stdout.
 exec 2>"$TermTTY"   # Suspend la redirection d'erreur
kill $PROGR_PID
}
TailleMo=0
REP="./ActionDoublons.txt" # Un fichier texte test à afficher 
CheminJournalDeveloppeur="./JournalDeveloppeur"
CheminJournal="./Journal"
CheminActionDbl="."
CheminJournalErreur="./JournalErreur"

truncate -s 0 "$CheminJournalErreur"
truncate -s 0 "$CheminJournal"
truncate -s 0 "$CheminJournalDeveloppeur"
# ================================ Premiere redirections des erreurs =============================================================
TermTTY=$(tty)
      exec 2> >(tee -a "$CheminJournalErreur" >&2) # Rétabli la redirection d'erreur et l'affiche sur stdout
      exec 2> >(tee -a "$CheminJournal" >&2) # envoi les erreurs dans #2 et chemin journal
      exec 2> >(tee -a "$CheminJournalDeveloppeur" >&2) # envoi les erreurs et les affichent Dans journal developpeur
echo -e "\ntest 1 de progress"
progress
exec 2>"$TermTTY"   # Suspend la redirection d'erreur
exec 1>"$TermTTY" # re affiche les commande suivante sur stdout et interrompt l'envoi de stdout au  journal developpeur (Commun mode Verbeux ou pas)

Le resultat avec l'affichage que je voulais éviter :

./TPRogr_For_RedirErr3.sh : ligne 58 :  5869 Complété              attend
$ ./TPRogr_For_RedirErr3.sh 

test 1 de progress
.... ENTREE pour continuer
 . . . .
le processus  va etre tué
./TPRogr_For_RedirErr3.sh : ligne 58 :  5869 Complété              attend

Le même code en commentant

    #  exec 2> >(tee -a "$CheminJournalErreur" >&2) # Rétabli la redirection d'erreur et l'affiche sur stdout
    #  exec 2> >(tee -a "$CheminJournal" >&2) # envoi les erreurs dans #2 et chemin journal
    #  exec 2> >(tee -a "$CheminJournalDeveloppeur" >&2) # envoi les erreurs et les affichent Dans journal developpeur

donne le résultat correct

$ ./TPRogr_For_RedirErr3.sh 

test 1 de progress
.... ENTREE pour continuer
 . . . .
le processus  va etre tué

Que faudrait-il faire pour ne pas commenter les lignes et ne pas avoir se message ?

Merci

Hors ligne

#2 Le 08/03/2022, à 21:01

Watael

Re : redirection provoque une erreur d'affichage une solution ?

j'ai testé le script (tel que donné au #1), et chez moi il ne reproduit pas d'erreurs. :neutral:

PS : j'ai fait cette réponse il y a 2 jours, mais il y a eu un coup de propre sur la discussion. smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 08/03/2022, à 21:47

Tawal

Re : redirection provoque une erreur d'affichage une solution ?

Hello,

Je pense que ce retour (qui n'est pas une erreur à mon sens) vient du fait que le contrôle des tâches est actif.
Pour le désactiver :

set +m

Edit:
J'illustre :

$ echo $-
himBHs
$ 
$ sleep 10 &
[2] 1577197
$ kill $!
[2]+  Complété              sleep 10
$ 
$ set +m
$ 
$ sleep 10 &
[2] 1577945
$ kill $!
$

Dernière modification par Tawal (Le 08/03/2022, à 21:53)

Hors ligne

#4 Le 08/03/2022, à 21:53

Watael

Re : redirection provoque une erreur d'affichage une solution ?

comme, par défaut, pour tout script.

j'ai copié le script tel quel, et il s'est déroulé sans erreurs.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 08/03/2022, à 22:06

Tawal

Re : redirection provoque une erreur d'affichage une solution ?

Ah oui, idem, pas d'erreurs (avec ou sans le contrôle des tâches).

Je ne sais pas alors sad

Hors ligne