我试图从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脚本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)