Cara menggunakan fungsi yang didefinisikan dengan xargs

16

Ini kode saya

#!/bin/bash

showword() {
  echo $1
}

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

Jadi saya memiliki fungsi showwordyang menggemakan string apa pun yang Anda berikan sebagai parameter ke fungsi.

Kemudian saya telah xargsmencoba memanggil fungsi dan meneruskan satu kata sekaligus ke fungsi, dan menjalankan 2 salinan fungsi secara paralel. Hal yang tidak berfungsi adalah xargstidak mengenali fungsinya. Bagaimana saya bisa mencapai apa yang saya coba lakukan, bagaimana saya bisa membuat xargs berfungsi dengan fungsi ini showword?

GMaster
sumber
Juga dibahas dalam stackoverflow.com/questions/11003418/...
Joshua Goldberg

Jawaban:

25

Coba ekspor fungsi, lalu panggil dalam subkulit:

showword() {
  echo $1
}

export -f showword
echo This is a sample message | xargs -d' ' -t -n1 -P2 bash -c 'showword "$@"' _
cuonglm
sumber
Terima kasih, tetapi apa pendapat Anda tentang jawaban saya di atas?
GMaster
@FazleA .: Saya bermaksud mengomentari itu, tetapi karena Anda bertanya di sini, saya akan menjawab di sini. Itu tidak akan berhasil, karena ketika Anda tidak memberikan parameter apa pun showword.
cuonglm
2
Satu pertanyaan lagi, mengapa _ trailing diperlukan? Apakah ini untuk menghentikan xargs dari memproses hal lain?
GMaster
Saya mendapat "ekspor: opsi ilegal -f" ketika saya mengekspor -f
Sagar Chamling