Bonjour
Je suis en train de faire un script et, comme tout bon unixien, j'utilise les pipes. Actuellement, mon script ressemble à ceci :
+------+ +-------+ +------+ +-------------+ +------+ +-------+
| echo | -> | MySQL | -> | awk1 | -> | traitements | -> | awk2 | -> | MySQL |
+------+ +-------+ +------+ +-------------+ +------+ +-------+ |
Le "echo" envoie un SELECT (à 2-3 paramètres près, la requête est "en dur" dans le script) pour récupérer les noms des objets à traiter
Le "awk1" décortique le résultat renvoyé par MySQL et construit les commandes correspondantes, traitées par le bloc suivant
Le "awk2" construit les requêtes (INSERT) à partir des résultats
C'est beau, ca marche, c'est parfait, la vie est belle, les filles se jettent sur moi et mon commercial me parle spontanément d'augmentation
Mais mon côté perfectionniste reste insatisfait : les 2 blocs MySQL sont finalement identiques (connexion à la même base avec le même user) et donc ca me semble idiot de se connecter 2 fois
A priori, ce serait simple : utiliser une seule connexion MySQL et "démarrer" l'ensemble en envoyant le SELECT par le bloc BEGIN du bloc "awk2", ce qui donnerait donc :
+------+
+------+ +-------------+ | echo | +-------+
+> | awk1 | -> | traitements | -> | awk2 | -> | MySQL | ->-+
| +------+ +-------------+ +------+ +-------+ |
^ V
+------------------------------<---------------------------+
|
Faudra juste que je fasse quelques vérifications côté risques d'interblocage
(pas d'inquiétude pour la terminaison)
Ma question est la suivante : comment mettre en place la boucle ? Comment je redirige la sortie standard du dernier processus de mes pipes à l'entrée standard du 1er
Autrement, si vous savez juste comment lancer 2 processus ayant chacun l'entrée standard reliée à la sortie standard de l'autre, je devrais me débrouiller
Message édité par mrbebert le 28-04-2010 à 22:08:13