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?

GMaster
la source
Également discuté dans stackoverflow.com/questions/11003418/…
Joshua Goldberg

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 "$@"' _
cuonglm
la source
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