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 :

récupérer le retour d'une commande


Sujet :

Shell et commandes GNU

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut récupérer le retour d'une commande
    Bonsoir,
    je suis entrain de me faire un script shell qui copie des fichiers sur une clée usb jusqu'à ce que celle-ci soit pleine.
    la commande cp renvoi un message du style "pas assez de place" lorsque la clée est vide, donc moi ce que je voudrai faire c'est récupéré le message que renvois la commande cp et faire un test dessus
    ou même mieu faire une boucle tantque cp ne renvoie rien...
    mais je trouve pas comment faire, je n'arrive pas récupéré ce maudit message

    merci de votre aide

  2. #2
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Bonjour,
    Pour récupérer la sortie standard d'une commande il faut utiliser l'opérateur $(...).
    Par exemple :
    narma@linimi:/tmp$ touch toto.txt
    narma@linimi:/tmp$ msg=$(cp toto.txt titi/ 2>&1 1>/dev/null)
    narma@linimi:/tmp$ echo $msg
    cp: la cible `titi/' n'est pas un répertoire: Aucun fichier ou répertoire de ce type
    "2>&1 1>/dev/null" sont des redirections des flux erreur et standard. Ainsi, je ne récupère que la sortie erreur car la sortie standard est redirgée vers /dev/null.

  3. #3
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    sinon, au lieu de récupérer un message qui sera plus complexe à traiter surtout si la localisation change, tu peux récupérer l'état retourné par n'importe quelle application avec la variable $? du shell

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    merci à vous deux de vos réponses, je testes ça ce soir!

  5. #5
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 194
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 194
    Par défaut
    Citation Envoyé par narmataru
    Bonjour,
    Pour récupérer la sortie standard d'une commande il faut utiliser l'opérateur $(...).
    Par exemple :

    "2>&1 1>/dev/null" sont des redirections des flux erreur et standard. Ainsi, je ne récupère que la sortie erreur car la sortie standard est redirgée vers /dev/null.
    ahh tiens, j'ai une petite question
    que signifie : 2>&1 ?
    tu redirige le flux d'erreur stderr (si je me souviens bien )vers &1 qu'est ce que ca veut dire ?

  6. #6
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548

  7. #7
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 194
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 194
    Par défaut
    vraiment sympa comme doc, je vais le bookmarker parce que ca peut parfois servir a retrouver la syntaxe bash ...

    donc dans ton exemple si j'ai bien compris, tu rediriges tous les flux d'erreur (2), vers ton descripteur de sortie normal (1) qui est lui meme rediriger vers un fichier ...

    un grand merci, j'ai toujours appris betement 2>&1 mais je ne savais pas exacetement ce que cela voulait dire ... J'ai appris quelques choses.

  8. #8
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Citation Envoyé par weed
    un grand merci, j'ai toujours appris betement 2>&1 mais je ne savais pas exacetement ce que cela voulait dire ... J'ai appris quelques choses.
    ben apparemment tu as mal appris le descripteur '2' représente la sortie d'erreur et non 'toutes les sorties'

    voilou

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

Discussions similaires

  1. [Langage/Algorithme] Récupérer le retour d'une commande MS-DOS dans une variable sous C++ Builder XE2
    Par Mercusyo dans le forum C++Builder
    Réponses: 7
    Dernier message: 21/03/2012, 09h41
  2. Récupérer retour d'une commande DOS ou scrit BATCH
    Par Robiwan87 dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 17/02/2011, 09h09
  3. Récupérer le résultat d'une commande shell
    Par espadon1 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 10h01
  4. Réponses: 2
    Dernier message: 02/01/2006, 10h39

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