Xargs peut être utilisé pour découper le contenu de l'entrée standard en pièces gérables et invoquer une commande sur chaque pièce. Mais est-il possible de savoir de quel morceau il s'agit? Pour donner un exemple:Est-il possible d'obtenir le numéro de segment dans une invocation de xargs?
seq 1 10 | xargs -P 2 -n 2 mycommand
appellera
mycommand 1 2 &
mycommand 3 4 &
mycommand 5 6 &
mycommand 7 8 &
mycommand 9 10 &
Mais je voudrais savoir dans mon script "mycommand" qui
mycommand 1 2
est le traitement de la première pièce/segment, et bientôt. Est-il possible d'accéder à cette information?
p.s. Dans l'exemple simple ci-dessus, je peux juste regarder les chiffres et dire. Mais pour les listes arbitraires, comment accéder à l'information sans réellement injecter le morceau # dans le flux d'entrée?
Merci. J'avais indiqué la possibilité d'injecter l'identifiant de segment avant d'envoyer la séquence à xargs. Puisque xargs et le "injecter" doivent tous deux connaître le split_param, il est peut-être préférable de le lire à partir d'une variable d'environnement exportée. Je voulais juste un paralléliseur imbriqué rapide et sale. Connaître le segment_id me permettrait d'étiqueter le fichier de sortie généré par chaque segment xargs. Mais je pense que Gnu Parallel est la bonne voie à suivre. Je l'ai évité car je suis terrifié par la syntaxe de Perl :) – srean
Regardez la vidéo et vous verrez que vous n'avez pas besoin de savoir quoi que ce soit sur perl pour utiliser GNU Parallel. Si vous savez comment utiliser xargs, vous savez déjà comment utiliser GNU Parallel. –