Je penche pour ca justement mais je ne vois pasEnvoyé par ggnore
Je penche pour ca justement mais je ne vois pasEnvoyé par ggnore
Grave urgent !!!
Re une solution du même pote que tout à l'heure :
Chez moi ça ne fonctionne pas bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part (./test.sh 3>&2 2>&1 1>&3 | tee stderr.txt ) > stdout.txt 2>&1
mon test.sh :
et stdout :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #!/bin/bash echo "1 sur stdout" echo "2 sur stdout" echo "3 sur stderr" >&2 echo "4 sur stdout" echo "5 sur stderr" >&2 echo "6 sur stderr" >&2
Mais sur sa machine à lui, ça semble fonctionner.1 sur stdout
2 sur stdout
4 sur stdout
3 sur stderr
5 sur stderr
6 sur stderr
Il dit qu'il ne faut pas que stderr ni stdout existe à l'origine, sinon ça plante.
edit: moi j'dis, il bluffe
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
Après avoir passé tout le week-end à chercher (eh oui, motivé j'étais lol), j'ai trouvé un début de solution..
Elle consiste en l'utilisation d'une file temporaire (FIFO) dans laquelle je récupère les messages d'erreurs et leur ajoute des caractères bidons au début pour pouvoir les extraire par la suite..
A partir de ce fichier test.sh :
Ma solution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #!/bin/bash echo "1 sur stdout" echo "2 sur stdout" echo "3 sur stderr" >&2 echo "4 sur stdout" echo "5 sur stderr" >&2 echo "6 sur stderr" >&2
La plupart du temps, les messages sont bien entrelacés..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #!/bin/bash # Création d'une file temporaire mkfifo /tmp/fifo01 { # Ajout de "!! " au début des messages arrivant dans fifo01 while read line; do echo "!! $line"; done </tmp/fifo01 & # Lancement du script ./test.sh 2>/tmp/fifo01 # Récupération de stdout et stderr dans out.txt, et des messages d'erreurs dans stderr.txt } 2>&1 | tee out.txt | sed -n '/^!! /p' | sed 's/^!! //' >stderr.txt # Suppression de "!! " au début des messages d'erreurs dans out.txt cat out.txt | sed 's/^!! //' >out.txt # Suppression de la file temporaire rm -f /tmp/fifo01
Parfois, les messages ne le sont pas, lorsqu'un ralentissement retarde la récupération des messages d'erreurs dans la file "fifo01"..
Il arrive également que le fichier out.txt soit vide ..
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager