回答:
{}
コマンドに2回書くだけです。以下が機能します:
$ echo test | xargs -I {} echo {} {}
test test
問題は、コマンドがどのようにネストされているかです。これを見てみましょう:
echo test | xargs -I {} echo {} && echo {}
bashが実行されecho test | xargs -I {} echo {}
ます。正常にecho {}
実行されると、実行されます。ネスティングを変更するには、次のようにします。
echo test | xargs -I {} sh -c "echo {} && echo {}"
ただし、このアプローチではコードインジェクションが発生する可能性があるため、問題が発生する可能性があります。「test」がシェルコードに置き換えられると、実行されます。したがって、ネストされたシェルに引数を使用して入力を渡す必要があります。
echo test | xargs -I {} sh -c 'echo "$1" && echo "$1"' sh {}
$(rm -f *)
。行う方が良いxargs -I {} sh -c 'echo "$1" && echo "$1"' sh {}
私にとっては、小文字のみが機能します。ディレクトリに何百もの画像があり、それらをソースをリストに入れたいと思っていました。大文字のi -I
オプションは機能しませんでした。小文字のみ。おそらくバージョンの違いが原因です。これらの画像はすべてのような名前Daniel_(somenumber).jpg
でした。
この構文は機能しました:
ls -l | tr -s ' ' ':'| cut -d: -f9 | xargs -i echo "img src='"{}"'alt='{}'"
戻り値:
src='Daniel_248.jpg' alt='Daniel_248.jpg'
...
Linux ver 4.14.96-hw +#80 SMP x86_64 GNU / Linux
var=test & echo $var ...