#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
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