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

Shell et commandes GNU Discussion :

Code retour commande (pbs à résoudre)


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut Code retour commande (pbs à résoudre)
    Bonsoir,

    J'ai remarquer le pbs suivants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ls -z 2>&1
    echo $?
    2
    Jusque là rien de bizarre.

    Par contre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ls -z 2>&1| tee ls.log
    echo $?
    0
    Très bien le tee réussi. Mais alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { ls -z 2>&1 ; echo $? ; }| tee ls.log
    Le echo m'affiche bien 2, mais comment je le met dans une variable ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    { ls -z 2>&1 ; retour=$? ; }| tee ls.log
    echo $retour
    $retour est vide !!

    Comment fait-on ?

    Merci.

    ++

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Par défaut
    le probleme c'est l'utilisation du pipe: chaque commande (le tee et le ls dans ton cas) est executee dans un subshell donc pas possible de garder la valeur d'une variable.

    Donc soit tu te passes du pipe, soit tu trouves un autre moyen de communiquer la valeur (ecriture dans un fichier par ex, mais il doit y avoir une solution plus legere).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut
    Il me semblait que pour le sub-shell, c'était avec ()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {cmd1;cmd2;} Execute commands as a group in the current shell. 
    (cmd1;cmd2) Execute commands as a group in a subshell.
    Issue de "Bash Quick Reference" De Arnold Robbins.

    Donc je suis bien dans le même shell; non ??

    ++

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Par défaut
    issue de la page man de bash:
    Each command in a pipeline is executed as a separate process (i.e., in a subshell)
    l'operateur pipe semble avoir une plus grande priorite que {}, tes 2 commandes sont donc dans le meme "subshell". (mais je me base uniquement sur le comportement a l'execution de ton code pour dire ca)

Discussions similaires

  1. [Runtime] Lancement de commande UNIX - différents codes retour ?!
    Par Fishbone dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 04/03/2009, 11h59
  2. commande sed : code retour
    Par sam01 dans le forum Administration système
    Réponses: 5
    Dernier message: 06/08/2008, 13h37
  3. code retour première commande dans un pipe
    Par ArnaudD dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/09/2007, 10h30
  4. [Perl] code retour de la commande "perl"
    Par NikoBe dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 14/08/2007, 10h16
  5. [commande DOS] Récupérer le code retour d'un programme
    Par bobunny dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 04/06/2004, 15h51

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