xargs가 명령 인수 대신 표준 입력에서 플래그를 전달하도록 합니다.

xargs가 명령 인수 대신 표준 입력에서 플래그를 전달하도록 합니다.

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' _

관련 정보