2016-09-09 5 views
1

다음 gradle 명령의 종료 코드를 알 필요가있는 zsh 용 스크립트를 작성하고 있습니다 : ./gradlew installDebug. 즉, 이걸 실행하는 동안 콘솔에 의 출력을 보내지 않으려합니다. 나는 다음 시도했다 :이 출력의 99 %를 제거 ./gradlew installDebug -q > /dev/null; 2>&1 어떻게 gradle에서 모든 출력을 억제 할 수 있습니까?

을하지만, 난 여전히 같은 라인을 얻을 다음

Note: Generating a MembersInjector for com.example.ui.BaseActivity. Prefer to run the dagger processor over that class instead. 
Note: Generating a MembersInjector for com.example.widget.nav.NavigationDrawerActivity. Prefer to run the dagger processor over that class instead. 
Note: Generating a MembersInjector for com.example.fragment.ShiftListFragment. Prefer to run the dagger processor over that class instead. 

이러한 경고는 보풀에서 오는 일반적으로하는, I (이 스크립트가 없으면 수동으로 빌드 할 때) 보관하고 싶습니다. 이 특정한 경우에 출력을 억제하기 만하면됩니다.

주어진 스트림의 출력을 올바르게 리디렉션하지 않는 것 같습니다.

답변

2

당신이 (zsh 포함)

POSIX를 들어
./gradelew installDebug -q &> /dev/null 

호환 쉘을 사용할 수 있습니다 당신은 zsh를 사용하고있는 한 당신은 작동하지 않는 이유는이다

./gradelew installDebug -q > /dev/null 2>&1 

을 사용할 수 있습니다 세미콜론. ;은 두 개의 명령을 구분하지만 리디렉션은 명령 줄별로가 아니라 명령별로 작동합니다. 그래서 실제로 일어나는 일은 다음과 동일합니다 : 첫 번째 명령 ./gradlew의 표준 출력은 /dev/null로 리디렉션하지만 표준 오류가 변경되지 않고, 따라서 일반적으로 인쇄에

./gradlew installDebug -q > /dev/null 
2>&1 
  • .

  • 실제로 두 번째는 명령이없는 리디렉션입니다. 이 경우 동작은 매개 변수 NULLCMD 및 옵션 SH_NULLCMDCSH_NULLCMD의 설정에 따라 달라집니다. 기본적으로 zsh은 지정된 리디렉션이 적용된 cat을 실행합니다.

+0

작업에 println이 있으면이 기능이 작동하지 않습니다 !!!!!!! –

+0

@JorgeMachado 왜 이것이 println과 작동하지 않는지 설명해 주시겠습니까? 아니면이게 작동하지 않는 것 같아요? – Adaephon

+0

나는 같은 문제가 있었기 때문에. 이 명령을 단일 명령으로 실행하면 명령이 작동한다고 가정 해 보겠습니다. 당신이 명령의 세리에서 그것을 사용한다면 그것은 깨질 것이고 나의 경우에 나는 버전 = 을 가진 version.txt를 만들었다. 제가 끝내는 것은 version = 입니다. 그것을 올바르게하는 방법은 당신의 gradle 파일에 println하지 않는 것입니다. logger.info ("println 대신에 어떤 메시지")를 사용하십시오. –

관련 문제