Come usare la funzione definita con xargs


16

Questo è il mio codice

#!/bin/bash

showword() {
  echo $1
}

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

Quindi ho una funzione showwordche fa eco a qualsiasi stringa che passi come parametro alla funzione.

Quindi ho xargsprovato a chiamare la funzione e passare una parola alla volta alla funzione, ed eseguire 2 copie della funzione in parallelo. La cosa che non funziona è xargsche non riconosce la funzione. Come posso ottenere quello che sto cercando di fare, come posso far funzionare xargs con la funzione showword?


Risposte:


25

Prova a esportare la funzione, quindi chiamandola in una subshell:

showword() {
  echo $1
}

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

Grazie, ma cosa ne pensi della mia risposta sopra?
GMaster,

@FazleA .: Ho intenzione di commentare questo, ma poiché chiedi qui, risponderò qui. Non funzionerà, da quando non hai passato alcun parametro a showword.
cuonglm,

2
Un'altra domanda, perché è richiesto il trascinamento? È per impedire agli xarg di elaborare qualcos'altro?
GMaster,


Ricevo "export: opzione illegale -f" quando
eseguo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.