java怎么调用shell脚本

 我来答
张珍珍zh
2017-12-05 · TA获得超过1037个赞
知道小有建树答主
回答量:990
采纳率:28%
帮助的人:84.8万
展开全部


 String cmdstring = "chmod a+x test.sh";

 Process proc = Runtime.getRuntime().exec(cmdstring);

 proc.waitFor(); //阻塞,直到上述命令执行完

 cmdstring = "bash test.sh"; //这里也可以是ksh等

 proc = Runtime.getRuntime().exec(cmdstring);

 // 注意下面的操作 

 string ls_1;

 BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(proc.getInputStream());

 while ( (ls_1=bufferedReader.readLine()) != null);

 bufferedReader.close();

 proc.waitFor();

为什么要有上面那段操作呢?

原因是:可执行程序的输出可能会比较多,而运行窗口的输出缓冲区有限,会造成waitFor一直阻塞。解决的办法是,利用Java提供的Process类提供的getInputStream,getErrorStream方法让Java虚拟机截获被调用程序的标准输出、错误输出,在waitfor()命令之前读掉输出缓冲区中的内容。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式