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?


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.