myApplication
ラインを標準出力にストリーミングするアプリケーションが提供されます。
$ myApplication
flag1
flag2
flag3
xargs
この値を引数として渡すのではなく、コマンドにフラグとして渡すにはどうすればよいですか?
たとえば、呼び出しの結果は次のようになります。
anotherApplication --flag "flag1" parameterNotFromXargs
anotherApplication --flag "flag2" parameterNotFromXargs
anotherApplication --flag "flag3" parameterNotFromXargs
このオプションを使用しようとすると失敗したため、誤った-I
出力が生成されました。
$ myApplication | xargs -L1 -I % echo "e: %"
e: %
e: %
e: %
答え1
コピーできません:
$ echo -e "one\ntwo\nthree" | xargs -L1 -I% echo "I was told % times"
I was told one times
I was told two times
I was told three times
myApplication
上記の呼び出しは、標準入力として出力を返すとxargs
正しく機能します。表示される出力が実際に標準エラーの場合は、.txtを使用して標準出力にリダイレクトする必要がありますmyApplication 2>&1
。
答え2
最も簡単な方法はスクリプトを書くことです。
#!/bin/sh
anotherApplication --flag "$1" parameterNotFromXargs
そして電話してください
myApplication | xargs -L1 ./myscript.sh
スクリプトの使用を避けるには、インラインコマンドを使用できます。
myApplication | xargs -L1 sh -c 'anotherApplication --flag "$1" parameterNotFromXargs' _