Como usar a função definida com xargs

16

Este é o meu código

#!/bin/bash

showword() {
  echo $1
}

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

Então, eu tenho uma função showwordque ecoa qualquer string que você passa como parâmetro para a função.

Então, eu estou xargstentando chamar a função e passar uma palavra de cada vez para a função e executar 2 cópias da função em paralelo. O que não está funcionando é xargsque não reconhece a função. Como posso conseguir o que estou tentando fazer, como posso fazer o xargs funcionar com a função showword?

GMaster
fonte
Também discutido em stackoverflow.com/questions/11003418/…
Joshua Goldberg

Respostas:

25

Tente exportar a função e chame-a em um subshell:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _
cuonglm
fonte
Obrigado, mas o que você acha da minha resposta acima?
GMaster
@FazleA .: Pretendo comentar sobre isso, mas como você pergunta aqui, eu responderei aqui. Isso não vai funcionar, desde quando você não passou nenhum parâmetro para showword.
precisa saber é
2
Mais uma pergunta: por que o final é obrigatório? É para parar o xargs de processar mais alguma coisa?
GMaster 01/10
Estou ficando "exportação: opção ilegal -f" quando eu faço exportação -f
Sagar Chamling