Як використовувати визначену функцію з 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?


Також обговорювалося в stackoverflow.com/questions/11003418/…
Джошуа Голдберг,

Відповіді:


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


Я отримую "експорт: нелегальний варіант -f", коли я експортую -f
Sagar Chamling
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.