web-dev-qa-db-ja.com

xargsで定義された関数を使用する方法

これは私のコードです

#!/bin/bash

showword() {
  echo $1
}

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

そのため、関数showwordを使用して、関数にパラメーターとして渡す文字列をエコーし​​ます。

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

24
GMaster

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

showword() {
  echo $1
}

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