IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

standard output, error output et code de retour


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut standard output, error output et code de retour
    Bonjour,

    Je souhaiterai afficher le résultat (erreur et standard) d'une commande shell sur la sortie standard, copier ce résultat dans un fichier et récupérer le code de retour de ma commande.
    Cela me paraissait simple au début mais je n'y arrive pas !

    Voici mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ls toto 2>&1 | tee -a logs.txt
    echo $?
    même si toto n'existe pas, le $? correspond en fait au retour de tee qui lui sera toujours juste...
    Comment récupérer le code de retour de ma commande ls ?

    Merci

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ElFenec Voir le message
    Bonjour,

    Je souhaiterai afficher le résultat (erreur et standard) d'une commande shell sur la sortie standard, copier ce résultat dans un fichier et récupérer le code de retour de ma commande.
    Cela me paraissait simple au début mais je n'y arrive pas !

    Voici mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ls toto 2>&1 | tee -a logs.txt
    echo $?
    même si toto n'existe pas, le $? correspond en fait au retour de tee qui lui sera toujours juste...
    Comment récupérer le code de retour de ma commande ls ?

    Merci
    Désolé, à partir d'un certain niveau de complexité on ne peut plus tout faire en une seule ligne !!!
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ls toto 1>/tmp/res$$ 2>&1; status=$?
    cat /tmp/res$$ |tee -a logs.txt
    rm -f /tmp/res$$
    echo $status
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 49
    Par défaut
    tu peux essayer la variable tableau PIPESTATUS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls toto 2>&1 | tee -a logs.txt
    echo ${PIPESTATUS[0]}
    affiche le code retour de ls

    une autre possibilité avec l'option de bash pipefail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set -o pipefail
    ls toto 2>&1 | tee -a logs.txt
    echo $?
    cf. man bash

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    Merci pour vos réponses.

    Sve@r : justement mon but était de ne pas utiliser de fichier temporaire !

    pfxxx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ls toto 2>&1 | tee -a logs.txt
    echo ${PIPESTATUS[0]}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set -o pipefail
    ls toto 2>&1 | tee -a logs.txt
    echo $?
    Les deux fonctionnent mais en bash, pas en ksh. Mais ça ira !

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ElFenec Voir le message
    Sve@r : justement mon but était de ne pas utiliser de fichier temporaire !
    Hé je me doute bien. Moi aussi quand je fais des scripts qui travaillent de la data j'essaye au maximum d'éviter le fichier temporaire. Mais quand on peut pas faire autrement... mais je connaissais pas la variable PIPESTATUS (qui ne semble dispo qu'en bash)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Proc Import ERROR : Output SAS data set must be provided
    Par bibicheDZ dans le forum SAS Base
    Réponses: 2
    Dernier message: 12/03/2014, 14h48
  2. Réponses: 0
    Dernier message: 04/03/2014, 11h10
  3. Réponses: 1
    Dernier message: 25/01/2013, 10h41
  4. [OpenOffice][Tableur] General input/output error sur Calc
    Par jmchantelou dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 07/12/2007, 21h53
  5. [SSIS] XML Source : Error Output
    Par Ykaar dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/09/2007, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo