#1 Le 06/03/2022, à 16: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, à 20: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.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 08/03/2022, à 20: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, à 20:53)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#4 Le 08/03/2022, à 20: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, à 21: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
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne