我有一个调用 tcsh 脚本的 Java 应用程序,该脚本又调用同一目录中的 perl 脚本。如果我通过键入“runPerlScript.sh”从命令中运行此脚本,它会完全正常工作,并生成几个应有的输出文件。但是,如果我从 Java 调用脚本,请使用以下代码:
String[] runCmd = {"/bin/tcsh","-c","/filepath/runPerlScript.sh"};
Process run = Runtime.getRuntime().exec(runCmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(run.getInputStream()));
String line = "";
line = reader.readLine();
System.out.println("\nStarting while.");
while((line)!=null){
System.out.println("Output from script: "+line);
line=reader.readLine();
}
reader.close();
System.out.println("Finished running perl script.");
它将我的 shell 脚本中的 echo 语句打印到我的控制台(我正在使用 NetBeans),但只生成 4 个输出文件(通常它生成接近 50 个)。似乎该进程提前退出,因为在生成这 4 个文件之后,我的 shell 脚本中的 echo 语句显示“已完成运行 runPerlScript.sh”打印到我的控制台。我尝试了几种不同的方法来运行这个脚本,包括 ProcessBuilder,但似乎没有一种方法可以生成输出文件。我上面的代码实际上是我能够生成任何输出的唯一方法,因为 ProcessBuilder 只是导致挂断。有谁知道我怎样才能连续运行脚本?