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 :

Une histoire de file descriptors


Sujet :

Shell et commandes GNU

  1. #1
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut Une histoire de file descriptors
    Bonjour,

    J'ai un problème qui reste pour l'instant sans solution. Il n'est pas important mais j'aimerais savoir si l'un d'entre vous aurait ne serait-ce que l'embryon d'une réponse.

    La commande join nécessite deux fichiers:

    Il est possible de remplacer l'un d'eux par une variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$var1" | join - file2
    Mais il ne semble pas possible d'utiliser deux variables. C'est dommage parce que lorsque je veux faire la jointure de deux variables, je dois en faire passer une dans un fichier temporaire juste parce que la commande join est un peu (psycho) rigide. Peut-être qu'en passant par des descripteurs de fichiers, on pourrait "truander" un peu, mais je suis vraiment une bille de ce côté-là. Quelque chose comme...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "$var1" >&3
    echo "$var2" | join - <&3
    Bon, n'essayez pas c'est tout pourri. Mais vous voyez la direction? Des idées?

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour jmelyn,

    Citation Envoyé par jmelyn
    ça fait un bail que je n'ai pas écrit par ici.
    il est revenu !

    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ var="1 toto                                     
    2 tata
    3 tutu"
    $ exec 3< <(printf '%s\n' "1 foo" "2 bar" "3 baz")
    $ echo "$var" | join  - <(cat <&3)
    1 toto foo
    2 tata bar
    3 tutu baz
    ...
    ?

    hmm , ça me plaît moyen
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Salut N_BaH, ça me fait plaisir de te "revoir"! Il semble que tu aies pris du galon, te voila modérateur , ouahh! Respect!

    Quant à ta solution, ben... c'est exactement ce que je voulais faire sans en être capable. Ça rajoute juste une ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var1=...
    var2=...
    exec 3< <(echo "$var2")
    echo "$var1" | join - <(cat <&3)
    Pourquoi ça te plait pas? Je trouve que c'est un peu abscon, voire sibyllin et même cabalistique, mais c'est aussi court, voire laconique et même compendieux. Alors...

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    je me serais probablement, avant, orienté vers l'utilisation de tableaux (associatifs).
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Et pourquoi pas tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ var1="1 toto
    > 2 tata
    > 3 titi"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ var2="1 foo
    > 2 bar
    > 3 baz"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ join <(echo "$var1") <(echo "$var2")
    1 toto foo
    2 tata bar
    3 titi baz
     
    $

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/03/2013, 14h53
  2. fcntl, LOCK_EX et Bad file descriptor : Une explication ?
    Par PauseKawa dans le forum Bibliothèques tierces
    Réponses: 3
    Dernier message: 21/11/2010, 11h45
  3. lire une ligne d'un file descriptor
    Par Pitou5464 dans le forum Réseau
    Réponses: 4
    Dernier message: 30/10/2006, 16h13
  4. Une histoire de lien...
    Par sloshy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/08/2005, 23h13
  5. [JAR][debutant] encore une histoire de classpath
    Par blaz dans le forum Général Java
    Réponses: 6
    Dernier message: 27/07/2005, 12h28

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