2

配列「foo」があります。xargs コマンドの一部である自己定義関数「bar」に配列を渡したいと思います。xargs でユーザー定義関数を呼び出す方法を理解するのに時間がかかります。それを実現するために、関数「bar」をエクスポートし、「bash -c」を使用して実行します。ただし、$foo を bar() に渡すことはできません。bar() の $1 が空です。

これを解決する方法を知っている人はいますか?

ありがとう!!

foo="1 2 3 4 5 6 7 8 9"

bar(){
   echo $1
   echo "asdf"
   sleep 2
}

export -f bar

echo $foo | xargs -n 1 -P 3 bash -c bar
4

1 に答える 1

1

bash -c経由で開始された新しいシェルが関数にアクセスできないことを期待しています。()orで始まるサブシェルでのみ利用できると思い$()ます``

新しく起動したシェルに関数を持たせたい場合は、おそらく関数をファイルに保存し--rcfile foo、関数を直接ロードするために使用しますか? それとも、スクリプトファイルとして書き直しますか?( の各実行bash -cはすでに新しいfork()/exec()ペアであるため、スクリプトを直接実行することもできます。)

于 2012-07-27T01:29:24.540 に答える