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 02/04/2012, à 15:43

billbok

recuperer code erreur et stdout

Bonjour,

J'ai un script (lanceur.sh) qui en appel un autre (plugin.pl)  et j'aimerais savoir si il est possible de recuperer dans des variables le code erreur ainsi que la sortie standard du script appelé.

Pour info:
- le script appelé (plugin.pl) sur lequel j'ai aucun droit de modif me revoi un code retour et un stdout sur lequel je doit realiser un filtre
             ex: code_retour=1
                   stdout="erreur Failedover"

- le lanceur, je dois modifier le code erreur en fonction du stdout
             ex: echo stdout
                   si  stdout=="erreur Failedover"
                   alors exit 2;

merci,

Hors ligne

#2 Le 02/04/2012, à 15:49

elendil

Re : recuperer code erreur et stdout

Salut,

Il me semble que lorsque tu lance une commande en Bash (donc une ligne dans ton lanceur.sh) le code d'erreur de chaque commande est stocké dans la variable "?" accessible via $?

Pour le stdout une redirection de la sortie standard dans un variable devrait suffire. Exemple :

#!/bin/bash
 
(
     while ...
     do
            echo ..
            echo $? #Code erreur de la commande précédente
     done
 
     if ...
     then
          echo ...
     fi
) 1>&result 2>&error

Elendil

Dernière modification par elendil (Le 02/04/2012, à 15:50)

Hors ligne

#3 Le 02/04/2012, à 17:00

Postmortem

Re : recuperer code erreur et stdout

Salut,
Jette un oeil ici.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#4 Le 02/04/2012, à 17:02

billbok

Re : recuperer code erreur et stdout

merci pour cette réponse rapide mais cette solution ne fonctionne pas, ca m'affiche
$result: ambiguous redirect

Dans mon lanceur.sh, j'ai:

./plugin.pl 1>$result
code_retour=$?                    //ici je veux le code retour du plugin.pl
echo $result                          //le stdout du plugin.pl
exit $code_retour                  //le code retour du lanceur.sh == plugin.pl


merci,

Hors ligne

#5 Le 02/04/2012, à 17:07

Postmortem

Re : recuperer code erreur et stdout

Re !
Pour avoir la sortie standard d'une commande dans une variable SORTIE_STANDARD et le code retour dans CODE_RETOUR :

SORTIE_STANDARD=$(./plugin.pl)
CODE_RETOUR=$?

Dernière modification par Postmortem (Le 02/04/2012, à 17:08)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 10/04/2012, à 11:11

billbok

Re : recuperer code erreur et stdout

Merci pour vos réponse, mais maintenant, j'ai un autre soucis, si je fais par exemple:

$output=$(man df)
j'ai bien ma sorti standart mais mon affichage est tout pourri smile
Est ce que je peux conserver l'indentation, espaces... etc...

merci,

Hors ligne

#7 Le 10/04/2012, à 11:41

Postmortem

Re : recuperer code erreur et stdout

Salut,
Le formatage est conservé. Du moins l'indentation, en faisant comme ça :

output=$(man df)
echo "$output"

Par contre, si tu ne mets pas les double-quotes autour de $output dans la commande echo, c'est echo qui "mange" le formatage.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 10/04/2012, à 12:00

billbok

Re : recuperer code erreur et stdout

merci

Hors ligne

#9 Le 10/04/2012, à 13:40

elendil

Re : recuperer code erreur et stdout

On peut aussi utiliser l'option -e de echo de façon à autoriser les commandes avec des échappement (backslash).

Hors ligne