Shell-Funktionen mit Xargs aufrufen
Ich versuche, mit xargs aufrufen einer komplexeren Funktion, die parallel.
#!/bin/bash
echo_var(){
echo $1
return 0
}
seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {}
exit 0
Dieser gibt den Fehler zurück
xargs: echo_var: No such file or directory
Irgendwelche Ideen auf, wie ich verwenden können, xargs, um dies zu erreichen, oder eine andere Lösung(en) wäre zu begrüßen.
InformationsquelleAutor der Frage fac3 | 2012-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Exportieren, die Funktion sollte es tun (ungetestet):
Können Sie die builtin
printf
anstelle des externenseq
:Auch mit
return 0
undexit 0
wie Masken, dass alle Fehler-Wert, der möglicherweise hergestellt werden, indem der Befehl vorhergehende. Auch, wenn es keine Fehler, es ist der Standard und somit etwas überflüssig.InformationsquelleAutor der Antwort Dennis Williamson
Mit GNU Parallel ist, sieht wie folgt aus:
Wenn Sie version 20170822 Sie müssen auch nicht
export -f
solange Sie dies ausführen:InformationsquelleAutor der Antwort Ole Tange
Etwas wie dieses auch funktionieren sollte:
InformationsquelleAutor der Antwort Eremite
Vielleicht ist das eine schlechte Praxis, aber Sie, wenn Sie der Definition von Funktionen in einer
.bashrc
oder andere Skript, Sie können wickeln Sie die Datei oder zumindest die Funktionsdefinitionen mit einer Einstellung vonallexport
:InformationsquelleAutor der Antwort xdhmoore