빌드 작업의 모든 출력을 캡처하여 에 보내려고 합니다 myprogram
. 일부만 캡처할 수 없는 것 같습니다. 이것이 내가 시도하는 것입니다:
make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" | myprogram &2 > 1
나는 또한 다음을 시도했습니다.
make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" &2 > 1 | myprogram
stdout
기본적으로 나는 모든 것을 보내고 그것으로 뭔가를 하고 싶습니다 . 현재는 출력의 일부만 캡처하고 나머지 부분은 화면에 표시됩니다. 모든 것을 다른 프로그램으로 어떻게 전송합니까?
답변1
두 가지 명령이 있으므로 다음을 사용하는 것이 좋습니다.
{ make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64"; } 2>&1 | myprogram
또는
( make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" ) 2>&1 | myprogram
출력이 파이프로 전달 되지 않는 경우 쉘이 두 호출의 출력을 하나로 리디렉션 make clean
하도록 위의 두 가지 중 하나를 사용해야 합니다 .make
답변2
모든 명령의 STDERR을 STDOUT으로 리디렉션해야 합니다. 그런 다음 모든 것을 으로 전송할 수 있습니다 myprogram
.
( make clean 2>&1 && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" 2>&1 ) | myprogram
답변3
(make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64") 2>&1 | myprogram
답변4
myprogram의 복잡성에 따라 make 작업을 myprogram에 전달하여 stdout과 stderr을 별도의 스트림으로 읽을 수도 있습니다.
내 프로그램이 얼마나 복잡해지기를 원하는지에 따라 다릅니다.
가장 큰 장점은 stdout과 stderr을 함께 묶지 않고 독립적으로 처리할 수 있다는 것입니다.