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?


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.