xargsで変数を2回繰り返す方法

xargsで変数を2回繰り返す方法

この例では、2番目のエコーテストをどのように実行できますか?

 echo test  | xargs -I {} echo {} && echo {}

ベストアンサー1

{}コマンドに2回だけ書き込みます。以下が機能します。

$ echo test | xargs -I {} echo {} {}
test test

問題はコマンド方式です入れ子になった。これを見てみましょう:

echo test | xargs -I {} echo {} && echo {}

強く打つ実行されます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 {}

おすすめ記事