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 27/01/2017, à 18: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, à 18:36)


Ubuntu server 16.04 x64

Hors ligne

#2 Le 27/01/2017, à 18: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, à 19:20

Himeroos

Re : Script message d'erreur

Bonjour,

ça fonctionne très bien smile

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, à 19: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, à 19: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, à 19:42)


Ubuntu server 16.04 x64

Hors ligne

#6 Le 27/01/2017, à 19: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, à 19: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, à 20: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. sad


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

Hors ligne

#9 Le 27/01/2017, à 20: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 smile

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, à 21:27)


Ubuntu server 16.04 x64

Hors ligne