Java使用Java进程生成器执行bash脚本

Java使用Java进程生成器执行bash脚本,第1张

概述Java使用Java进程生成器执行bash脚本

我试图从Java执行一个bash脚本,它返回错误/bin/bash: '/home/nika/NetBeansprojects/Parallel Framework/process-executor.sh': No such file or directory ,我正在努力的Ubuntu 14.04与netbeans8&jdk8。

这是我的代码:

public class Process { public static voID main(String[] args) { try { ProcessBuilder pb = null; Process p; String cmd2 = ""; String workingDir = System.getProperty("user.dir"); System.out.println(""+workingDir); String scriptloc="'"+workingDir+"/process-executor.sh'"; String cmd[] = {"/bin/bash",scriptloc,"workspace/ForDemo.java","ForDemo.java","ForDemo"}; for (int i = 0; i <= cmd.length-1; i++) { cmd2 += " "+cmd[i]; } System.out.println("" + cmd2); pb = new ProcessBuilder(cmd); pb.directory(new file(workingDir)); p = null; try { p = pb.start(); } catch (IOException ex) { Logger.getLogger(Process.class.getname()).log(Level.SEVERE,null,ex); } BufferedReader stdinput = new BufferedReader(new inputStreamReader(p.getinputStream())); BufferedReader stdError = new BufferedReader(new inputStreamReader(p.getErrorStream())); // read the output from the command System.out.println("Here is the standard output of the command:n"); String s = null; String output = ""; while ((s = stdinput.readline()) != null) { System.out.println(s); } output = ""; // read any errors from the attempted command System.out.println("Here is the standard error of the command (if any):n"); while ((s = stdError.readline()) != null) { System.out.println(s); } } catch (IOException ex) { Logger.getLogger(Process.class.getname()).log(Level.SEVERE,ex); } } }

但是当我从terminal执行这个命令时,它执行脚本bin/bash '/home/nika/NetBeansprojects/Parallel Framework/process-executor.sh' workspace/ForDemo.java ForDemo.java ForDemo

我有我的脚本的另一个问题,它不执行cd命令,并说'/home/nika/NetBeansprojects/Parallel Framework/workspace/ForDemo.java/': No such file or directory

perl脚本的状态从bash脚本运行

使用Shell脚本recursion移除linux中的所有备份文件

“〜/ Desktop / test.txt:没有这样的文件或目录”

反馈两个进程的stdin和stdout

grep而读取行的替代品

我的脚本的内容是

#!/bin/bash PATH=/bin:/usr/bin:/usr/local/bin WORK=${PWD}/workspace/ echo "'${WORK}${2}'" cd "'${WORK}${2}/'" javac $2 java $3 echo "$3"

我的目录层次就像

– 并行框架


– process-executor.sh


– 工作区


— ForDemo.java(目录)


—- ForDemo.java

监视目录内容的变化

使用shell脚本合并两个属性文件

在cgo注释中使用windows环境pathvariables

RS232控制台通信 – 设置波特率为1 MBaud

可能“循环”和“输出”不能在我的bash脚本中正常工作

在这种情况下,不要在脚本路径中使用单引号,即修复scriptloc变量,如下所示:

String scriptloc= workingDir + "/process-executor.sh";

如果您在命令行中执行此 *** 作(为了避免路径中的空格字符),则必须使用单引号,但在此情况下不需要使用单引号,因为您已经在cmd[]数组中隐式指定了此路径只是一个“单元”

总结

以上是内存溢出为你收集整理的Java使用Java进程生成器执行bash脚本全部内容,希望文章能够帮你解决Java使用Java进程生成器执行bash脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1274120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存