Pages : 1
#1 Le 27/01/2017, à 17:31
- Himeroos
Script message d'erreur
Bonjour,
J'ai actuellement dans une variable un message d'erreur dont j'aimerais en extraire juste un nom de dossier voici le message type :
Black Swan.mkv - checksum error
Unexpected end of archive
Black Swan.mkv : packed data checksum error in volume Black Swan.test.rar.part5.rar
Ce qui est en rouge c'est ce qui est variable (dans le message)
J'aimerais récuperer juste ceci dans une variable :
Black Swan.mkv - checksum error
Unexpected end of archive
Black Swan.mkv : packed data checksum error in volume Black Swan.test.rar.part5.rar
Avez-vous une idée pour m'aider svp?
Dernière modification par Himeroos (Le 27/01/2017, à 17:36)
Ubuntu server 16.04 x64
Hors ligne
#2 Le 27/01/2017, à 17:48
- Watael
Re : Script message d'erreur
salut,
$ var="Black Swan.mkv - checksum error
Unexpected end of archive
Black Swan.mkv : packed data checksum error in volume Black Swan.test.rar.part5.rar"
$ echo "${var##*volume }"
Black Swan.test.rar.part5.rar
?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 27/01/2017, à 18:20
- Himeroos
Re : Script message d'erreur
Bonjour,
ça fonctionne très bien
Maintenant j'ai un autre soucis, je pensais que le résultat de ma commande était contenue dans ma variable sauf que finalement elle reste vide
Ubuntu server 16.04 x64
Hors ligne
#4 Le 27/01/2017, à 18:31
- Watael
Re : Script message d'erreur
les messages d'erreur sont envoyés sur la sortie d'erreur.
il faut sans doute la redirigée vers la sortie standard pour qu'elle soit dans la variable.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 27/01/2017, à 18:35
- Himeroos
Re : Script message d'erreur
Comment fait-on pour la rediriger vers la variable s'il te plait ?
j'ai tester un
/usr/local/bin/unrar t "$(basename "${i%.*}").rar" | grep '(*.part[0-9]{1,9}.rar)' >> var
Mais ça ne fait rien
Edit :
J'ai essayé avec les 2>> et 1>> ça ne fonctionne pas du tout
Dernière modification par Himeroos (Le 27/01/2017, à 18:42)
Ubuntu server 16.04 x64
Hors ligne
#6 Le 27/01/2017, à 18:49
- Watael
Re : Script message d'erreur
?
là, tu n'assignes pas une variable, tu crées un fichier.
mais, en plus simple, si la commande unrar échoue, tu affiches $i, ça devrait aller, non ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 27/01/2017, à 18:55
- Himeroos
Re : Script message d'erreur
Pas dans le cas de multipart rar, puisque que je teste un unrar t FILE.part1.rar ou un unrar t FILE.part5.rar il test toujours à partir du PART1.rar. Donc ça peut-être n'importe laquelle.
Et autant pour moi c’était un test "au cas où" mais sinon j'avais tester :
var=`/usr/local/bin/unrar t "$(basename "${i%.*}").rar" | grep '(*.part[0-9]{1,9}.rar)'`
Ubuntu server 16.04 x64
Hors ligne
#8 Le 27/01/2017, à 19:12
- Watael
Re : Script message d'erreur
si c'est un message d'erreur redirigé vers stderr (&2), grep devrait ne rien capturer, car le pipe redirige la stdout de la première commande vers la stdin de la commande suivant le pipe (|).
je n'ai ni unrar (je pourrais, mais je n'en ai pas l'usage), ni d'archive multipart pour tester.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 27/01/2017, à 19:19
- Himeroos
Re : Script message d'erreur
Ce que grep recupère par le pipe c'est :
UNRAR 5.40 freeware Copyright (c) 1993-2016 Alexander Roshal
Testing archive Black Swan.test.rar.part1.rar
Testing Black Swan.mkv 14%
Testing archive Black Swan.test.rar.part2.rar
... Black Swan.mkv 28%
Testing archive Black Swan.test.rar.part3.rar
... Black Swan.mkv 43%
Testing archive Black Swan.test.rar.part4.rar
... Black Swan.mkv 57%
Testing archive Black Swan.test.rar.part5.rar
... Black Swan.mkv
Black Swan.mkv - checksum error
Unexpected end of archive
Black Swan.mkv : packed data checksum error in volume Black Swan.test.rar.part5.rar
Testing archive Black Swan.test.rar.part6.rar
Testing archive Black Swan.test.rar.part7.rar
Testing archive Black Swan.test.rar.part8.rar
Total errors: 2
Et maintenant ce que grep renvoie (à la console) :
Black Swan.mkv - checksum error
Unexpected end of archive
Black Swan.mkv : packed data checksum error in volume Black Swan.test.rar.part5.rar
Maintenant la question c'est comment récupérer le stdout de grep dans une variable
Edit :
En faisant tout plein de test je me suis rendu compte que tu avais raison le pipe ne recevait pas le message d'erreur donc ces trois lignes fonctionnent :
/usr/local/bin/unrar t "$(basename "${i%.*}").rar" 2> /tmp/temp.txt
var=`cat /tmp/test.txt`
echo "${var##*volume }"
Merci à toi.
Dernière modification par Himeroos (Le 27/01/2017, à 20:27)
Ubuntu server 16.04 x64
Hors ligne