Comment utiliser la fonction définie avec xargs


16

C'est mon code

#!/bin/bash

showword() {
  echo $1
}

echo This is a sample message | xargs -d' ' -t -n1 -P2 showword

J'ai donc une fonction showwordqui fait écho à la chaîne que vous passez en paramètre à la fonction.

Ensuite, j'ai xargsessayé d'appeler la fonction et de passer un mot à la fois à la fonction, et d'exécuter 2 copies de la fonction en parallèle. Ce qui ne fonctionne pas, c'est xargsqu'il ne reconnaît pas la fonction. Comment puis-je réaliser ce que j'essaie de faire, comment faire fonctionner xargs avec la fonction showword?


Réponses:


25

Essayez d'exporter la fonction, puis appelez-la dans un sous-shell:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _

Merci, mais que pensez-vous de ma réponse ci-dessus?
GMaster

@FazleA .: J'ai l'intention de commenter cela, mais parce que vous demandez ici, je vais répondre ici. Cela ne fonctionnera pas, car lorsque vous n'avez transmis aucun paramètre à showword.
cuonglm

2
Encore une question, pourquoi le suivi est-il requis? Est-ce pour empêcher xargs de traiter autre chose?
GMaster


J'obtiens "export: option illégale -f" quand j'exporte -f
Sagar Chamling
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.