xargs에 아무것도 배관하지 않음


14

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

어떻게 피할 수 있습니까?


8
답변에서 "수정"을 이동하고 자신의 답변을 수락하십시오. 이런 식으로 당신의 발견은 다른 사람들에게 유용 할 것입니다. meta.unix.stackexchange.com/questions/809/…
andcoz

1
당시 충분한 점수가 없었습니다. 지금하겠습니다.
Richard

답변:


13

-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.


3

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.