Как использовать определенную функцию с xargs


16

Это мой код

#!/bin/bash

showword() {
  echo $1
}

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

Итак, у меня есть функция, showwordкоторая отображает любую строку, которую вы передаете в качестве параметра функции.

Затем я xargsпытаюсь вызвать функцию и передать ей по одному слову за раз, и параллельно запустить 2 копии функции. То, что не работает xargs, не распознает функцию. Как мне добиться того, что я пытаюсь сделать, как заставить Xargs работать с этой функцией showword?


Ответы:


25

Попробуйте экспортировать функцию, а затем вызвать ее в подоболочке:

showword() {
  echo $1
}

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

Спасибо, но что вы думаете о моем ответе выше?
GMaster

@FazleA .: Я намерен это прокомментировать, но, поскольку вы спрашиваете здесь, я отвечу здесь. Это не сработает, так как, когда вы не передали ни одного параметра showword.
cuonglm

2
Еще один вопрос, почему трейлинг _ требуется? Это мешает Xargs обрабатывать что-нибудь еще?
GMaster


Я получаю «export: Illegal option -f», когда я делаю экспорт -f
Сагар Чамлинг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.