2016-09-09 4 views
1

私は次のgradleコマンドの終了コードを知る必要があるzshのスクリプトを書いています:./gradlew installDebug。言い換えれば、これを実行している間にコンソールにの出力がありません。私は、次のことを試してみた: ./gradlew installDebug -q > /dev/null; 2>&1 どのようにしてgradleからのすべての出力を抑制できますか?

これは、出力の99%を排除し、私はまだ、次のような行を取得:

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. 

これらの警告は、糸くずから来た、一般的にされて、私は(私がこのスクリプトを使わずに手作業でビルドした場合)私はこの1つの特定のケースで出力を抑制したいだけです。

私は、特定のストリームの出力を正しくリダイレ​​クトしていないような気がします。

答えて

2

限り、あなたは、あなたはそれが機能しなかった理由がある

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

を使用することができます(zsh含む)POSIX互換シェルの場合

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

を使用することができますzshを使用しているとして、セミコロン。 ;は2つのコマンドを区切りますが、リダイレクトはコマンドラインではなくコマンドごとに機能します。それでは、実際に起こることは、次のと同等です。最初のコマンド./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の代わりに何らかのメッセージ")を使う –

関連する問題