Cómo usar la función definida con xargs

16

Este es mi codigo

#!/bin/bash

showword() {
  echo $1
}

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

Entonces tengo una función showwordque hace eco de cualquier cadena que pases como parámetro a la función.

Luego xargsintento llamar a la función y pasar una palabra a la vez a la función, y ejecutar 2 copias de la función en paralelo. Lo que no funciona es xargsque no reconoce la función. ¿Cómo puedo lograr lo que estoy tratando de hacer, cómo puedo hacer que xargs funcione con la función showword?

GMaster
fuente
También discutido en stackoverflow.com/questions/11003418/…
Joshua Goldberg

Respuestas:

25

Intente exportar la función, luego instálela en una subshell:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _
Cuonglm
fuente
Gracias, pero ¿qué opinas de mi respuesta anterior?
GMaster 01 de
@FazleA .: Tengo la intención de comentar sobre eso, pero como preguntas aquí, responderé aquí. Eso no funcionará, ya que cuando no pasó ningún parámetro a showword.
Cuonglm
2
Una pregunta más, ¿por qué se requiere el _ final? ¿Es para evitar que xargs procese algo más?
GMaster 01 de
Recibo "exportar: opción ilegal -f" cuando exporto -f
Sagar Chamling