xargs -I 引数の正確な形式は何ですか?

xargs -I 引数の正確な形式は何ですか?

実際、「-I」パラメータ(文字列、変形など)の正確な形式を知りたいです。

このようなスクリプトの場合

seq 15 | xargs -I num

seq 15 | xargs -I num bash -c "echo num"

働く

ここで "num" は bash -c "" でスクリプトを実行するパラメータであるようですが、 bash に num を導入するときに型がわかりません。

努力する

seq 15 | xargs -I num bash -c "name=num; echo name"

失敗した場合は文字列として扱います。

努力する

seq 15 | xargs -I num bash -c "name=num; echo $name"

それも無駄です。

スレッド数を制限するためにマルチスレッドを試みたかったです--max-procs。問題はよくわかりませんが、「=」に関するものかもしれないと思います。私が望むように動作させるにはどうすればよいですか?

答え1

numseqによって出力された各数値文字列に置き換えられました。

name正しい場所に割り当てようとしましたが、脱出したと表示されます$

seq 15 | xargs -I num bash -c "name=num; echo \$name"

しようとすると:

name=hallo; seq 15 | xargs -I num bash -c "name=num; echo $name"

気づくかもしれません。

答え2

Antonはあなたの間違いを説明しました。bash -c ''この状況に対するより良い解決策があると付け加えたいと思います。

seq 15 | xargs -L 1 bash -c 'name=$1; echo $name' foo

柔軟性があるので、より良いです。複数のパラメータを渡すことができます(seq入力には役に立たないかもしれません)。

関連情報