xargsで定義済み関数を使用する方法


16

これは私のコードです

#!/bin/bash

showword() {
  echo $1
}

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

したがって、関数showwordにパラメーターとして渡す文字列をエコーする関数があります。

次にxargs、関数を呼び出して一度に1つの単語を関数に渡し、関数の2つのコピーを並行して実行しようとしています。動作してxargsいないのは、機能を認識しないことです。私がやろうとしていることをどのように達成できますshowwordか、xargsを関数で動作させるにはどうすればよいですか?


回答:


25

関数をエクスポートして、サブシェルで呼び出してみてください:

showword() {
  echo $1
}

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

感謝しますが、上記の私の答えについてどう思いますか?
GMaster 14年

@FazleA .:私はそれについてコメントするつもりですが、あなたがここで尋ねるので、私はここで答えます。にパラメータを渡さなかったため、それは機能しませんshowword
cuonglm 14年

2
もう1つの質問、なぜ_が必要なのですか?xargsが他の何かを処理するのを止めるのですか?
GMaster 14年

4
@FazleA .: unix.stackexchange.com/questions/152391/を読んで
cuonglm

私は-fエクスポートを行うとき、私は「不正なオプション-f輸出」を取得しています
サーガルChamling
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.