私は知っていますl="a b c"
。
echo $l | xargs ls
生産する
ls a b c
どの構造が生産されるか
mycommand -f a -f b -f c
ベストアンサー1
1つの方法は次のとおりです。
echo "a b c" | xargs printf -- '-f %s\n' | xargs mycommand
これはa
、およびにスペース、改行、引用符、またはバックスラッシュが含まれていないとb
仮定します。c
:)
GNUを使用すると、findutil
一般的なケースを処理できますが、もう少し複雑です。
echo -n "a|b|c" | tr \| \\0 | xargs -0 printf -- '-f\0%s\0' | xargs -0 mycommand
区切り文字を|
、 または に表示されない他の文字に置き換えることができます。a
b
c
編集する:〜のように@michaelmore引数リストが長いと、渡すことができる最大引数長を超える危険がありますmycommand
。これが発生すると、最後の項目がxargs
リストを分割し、別のコピーを実行し、mycommand
一方が終了していないままになる危険があります-f
。これが気になる場合は、xargs -0
上記の最後の項目を次のように変更できます。
... | xargs -x -0 mycommand
これは問題を解決しませんが、mycommand
引数リストが長すぎると実行が中断されます。