Jak korzystać ze zdefiniowanej funkcji w xargs


16

To jest mój kod

#!/bin/bash

showword() {
  echo $1
}

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

Mam więc funkcję, showwordktóra powtarza dowolny ciąg przekazany jako parametr funkcji.

Następnie xargspróbuję wywołać funkcję i przekazać jedno słowo na raz do funkcji i uruchomić równolegle 2 kopie funkcji. To, co nie działa, to xargsnie rozpoznaje funkcji. Jak mogę osiągnąć to, co próbuję zrobić, jak sprawić, by xargs działał z tą funkcją showword?


Odpowiedzi:


25

Spróbuj wyeksportować funkcję, a następnie wywołać ją w podpowłoce:

showword() {
  echo $1
}

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

Dzięki, ale co myślisz o mojej odpowiedzi powyżej?
GMaster

@FazleA .: Zamierzam to skomentować, ale ponieważ pytasz tutaj, odpowiem tutaj. To nie zadziała, ponieważ kiedy nie przekazałeś żadnego parametru do showword.
cuonglm

2
Jeszcze jedno pytanie, dlaczego końcowy _ jest wymagany? Czy to ma powstrzymać Xargs przed przetwarzaniem czegokolwiek innego?
GMaster


Dostaję komunikat „eksport: niedozwolona opcja -f” podczas eksportu -f
Sagar Chamling,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.