How to execute shell script in Java?

來源:互聯網
上載者:User

經常需要在Java中調用其它的指令碼(shell,cmd), 以前都用:

Runtime r = Runtime.getSystemRuntime();<br />r.exec("whatever you want to run"); 

但是有時侯其運行結果是不可預期的,帶來很多麻煩。從java 5.0以後,引入了ProcessBuilder to create operating system processes:

String cmd = "cd ../.. ; ls -l"; // this is the command to execute in the Unix shell<br />cmd ="cd ~/kaven/Tools/DART ; sh start_dart.sh";<br />// create a process for the shell<br />ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);<br />pb.redirectErrorStream(true); // use this to capture messages sent to stderr</p><p>Process shell = pb.start();<br />InputStream shellIn = shell.getInputStream(); // this captures the output from the command<br />int shellExitStatus = shell.waitFor(); // wait for the shell to finish and get the return code</p><p>// at this point you can process the output issued by the command<br />// for instance, this reads the output and writes it to System.out:<br />int c;<br />while ((c = shellIn.read()) != -1) {<br />System.out.write(c);<br />}<br />// close the stream<br />try {<br />shellIn.close();<br />}<br />catch (IOException ignoreMe)<br />{}<br />System.out.print(" *** End *** "+shellExitStatus);</p><p>System.out.println(pb.command());<br />System.out.println(pb.directory());<br />System.out.println(pb.environment());<br />System.out.println(System.getenv());<br />System.out.println(System.getProperties()); 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.