2012-04-26 2 views
1

WindowsとUnixでいくつかのコマンドラインテストを自動化しようとしています。私はJava 1.6とApache Commons CLI 1.1を使用しています。私がJavaコードで行うことは、Apache Commons CLIのaddArgumentメソッドを使用して実行するコマンドを構築することです。私は私が実行したいコマンドラインを構築した後、私はので、私は、コマンドの終わりcloudscanOutputFilenameが入った文字列であるUnix上のJava Apache Commons CLI; >リダイレクトの代わりに実行可能ファイルの引数として扱われています

cloudscan_cmdl.addArgument(">"); 
cloudscan_cmdl.addArgument(cloudscanOutputFilename); 

に以下を追加されたファイルへのパイプにコマンドの出力を望んでいましたfilename私は使いたいです。これはWindows上で正常に動作し、コマンドがビルドされ、リダイレクトされた2つの引数が追加され、ファイルが正常に作成されます。 Unixでは、しかし、それは実行可能ファイルへの追加の引数としての代わりに、リダイレクトとして>とファイル名の文字列を処理しています。

は、私はそれを直接コマンドライン上でそのようにタイプされたかのようにUnixのは、このコマンドを読むために取得するために何ができますか?私はコマンドを文字列として出力し、Unixではそれをコピーして貼り付け、期待どおりに動作しますが、Javaプログラムから実行すると、リダイレクトは正しく処理されません。

私は両方の真と偽ともないのに役立ちますような方法のaddArgument(文字列、ブール値)のバージョンを使用してみました。これは真剣に私を夢中にさせている。

答えて

1

あなたはthe classの目的を誤解しています。前述のとおり、「実行するプロセスを指定する」ためのものです。引数のリストをプログラムに渡すのに役立ちます。シェルに何をすべきかを伝えるためのものではありません。 >は、シェルによって実装されたリダイレクション演算子です。 Windows上で動作するという事実は事故です。

はまた、これはApache Commons Exec、ないApache Commons CLIの一部であることに注意してください。

リダイレクトを自分で行うことを避けるために、あなたの最良のオプションは、各プラットフォーム用の簡単なバッチファイルやシェルスクリプトを作成し、それを呼び出すことかもしれません。

0

エスケープ>

cloudscan_cmdl.addArgument("\>"); 
関連する問題