xargs에 아무것도 배관하지 않음 있습니다. 스크립트가 끝나면

어떤 상황에서는 stdout에 아무것도없는 스크립트가 있습니다. 스크립트가 끝나면 xargs를 사용하여 다른 명령에 필요한 줄을 전달합니다. 내 문제는 stdout에 아무것도 없을 때 일반적인 “Usage : program arg1 arg2″오류 메시지가 나타납니다.

어떻게 피할 수 있습니까?



답변

-r또는 --no-run-if-empty옵션 이 필요합니다 .

이 특정 동작은 플랫폼 간을 만들기가 어렵습니다. BSD 버전은 기본적 으로 xargs실행됩니다 -r. GNU 버전이 필요합니다. FreeBSD 버전의 GNU는 GNU와의 호환성을 위해 플래그를 xargs무시합니다 -r. Mac OS X 버전에서도 플래그를 허용하지 않고 오류가 발생 illegal option합니다.

그런 다음 $OSTYPE크로스 플랫폼 스크립트를 작성 하기 위해 OS 감지를 사용하도록 선택할 수 있습니다 . 더 좋은 방법은 xargs그 자체 의 행동을 감지하는 것입니다. 로 실행하고 -r실패하면 (상태 코드> 0)없이 실행하십시오 -r.


답변

맨 페이지를 읽어야하는 이유에 대한 교훈…

-r또는 --no-run-if-empty플래그는 내 친구입니다.