首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在命令行运行Shell脚本

在命令行运行Shell脚本
EN

Stack Overflow用户
提问于 2011-12-27 15:23:39
回答 1查看 100关注 0票数 1

我正在使用cygwin运行一个Shell脚本。

代码语言:javascript
复制
Process p;
InputStream in;
BufferedReader br;
String line;
String cmd;
cmd = "D:/cygwin/bin/bash -c '/bin/test/app.sh" +three_ltr_id+""+mon_code+""+year_code+""+part_no+""+version_no+" '";
System.out.println("EXECUTING: " + cmd);
p = Runtime.getRuntime().exec(cmd);
in = p.getInputStream();
p.waitFor();
 br = new BufferedReader(new InputStreamReader(in));
 System.out.println("OUT:");
 while ((line = br.readLine()) != null) {
 System.out.println(line);
 System.out.println("SCRIPT EXECUTED PROPERLY");

这显示了执行和我传递给脚本的命令。

如果我进入D:/cygwin/bin/test文件夹并运行相同的命令,它就能工作。

当我在命令行中运行相同的命令时,它将无法工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-27 15:29:47

您需要立即从p.getInputStream()开始读取输入,并继续读取,直到没有更多的输入。在Windows上,管道中几乎没有或根本没有缓冲区,进程一旦填充就会挂起。

错误流也是如此。您可以启动线程来读取这两个流,或者在启动进程的方式中有一个选项来组合常规输出和错误,您可以从那里读取它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8646259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档