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?


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.