Wie man definierte Funktionen mit xargs benutzt

15

Das ist mein Code

#!/bin/bash

showword() {
  echo $1
}

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

Ich habe also eine Funktion, showworddie jeden String wiedergibt, den Sie als Parameter an die Funktion übergeben.

Dann habe ich xargsversucht, die Funktion aufzurufen und jeweils ein Wort an die Funktion zu übergeben und 2 Kopien der Funktion parallel auszuführen. Was nicht funktioniert, ist xargs, dass die Funktion nicht erkannt wird. Wie kann ich erreichen, was ich versuche, wie kann ich xargs mit der Funktion arbeiten lassen showword?

GMaster
quelle
Ebenfalls diskutiert in stackoverflow.com/questions/11003418/…
Joshua Goldberg

Antworten:

24

Versuchen Sie, die Funktion zu exportieren, und rufen Sie sie dann in einer Subshell auf:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _
cuonglm
quelle
Danke, aber was denkst du über meine Antwort oben?
GMaster
@FazleA .: Ich habe vor, das zu kommentieren, aber weil du hier fragst, werde ich hier antworten. Das geht nicht, seitdem Sie keinen Parameter an übergeben haben showword.
1.
1
Noch eine Frage, warum ist das nachgestellte _ erforderlich? Soll das verhindern, dass XARGs etwas anderes verarbeiten?
GMaster
3
@ FazleA .: lies unix.stackexchange.com/questions/152391/…
cuonglm
Ich erhalte "export: Illegale Option -f", wenn ich exportiere -f
Sagar Chamling