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