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?


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

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


Ich erhalte "export: Illegale Option -f", wenn ich exportiere -f
Sagar Chamling
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.