我正在尝试执行一个 bash 脚本,该脚本从 java 传递了 4 个参数。我可以使用以下代码完美地执行没有参数的脚本:
<前>尝试
{
字符串命令=“bash bash/testbash.sh”;
运行时运行 = Runtime.getRuntime();
进程 pr = run.exec(命令);
pr.waitFor();
BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
字符串行=“”;
while ((line=buf.readLine())!=null)
{
System.out.println(行);
}
}
捕获(异常 e)
{
System.out.println("异常"+ e);
e.printStackTrace();
}
}
所以我打算创建一个 String[] 将命令和参数传递给 Runtime.exec(),如下所示:
<前>尝试
{
String[] 命令={"bash bash/testbash.sh"};
运行时运行 = Runtime.getRuntime();
进程 pr = run.exec(命令);
pr.waitFor();
BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
字符串行=“”;
while ((line=buf.readLine())!=null)
{
System.out.println(行);
}
}
捕获(异常 e)
{
System.out.println("异常"+ e);
e.printStackTrace();
}
}
这给了我这个错误:
异常 java.io.IOException:无法运行程序“bash bash/testbash.sh”:错误=2,没有这样的文件或目录
java.io.IOException:无法运行程序“bash bash/testbash.sh”:错误= 2,没有这样的文件或目录
在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
在 java.lang.Runtime.exec(Runtime.java:615)
在 java.lang.Runtime.exec(Runtime.java:483)
在 bashExecuter.main(bashExecuter.java:43)
引起原因:java.io.IOException:错误=2,没有这样的文件或目录
在 java.lang.UNIXProcess.forkAndExec( native 方法)
在 java.lang.UNIXProcess.(UNIXProcess.java:135)
在 java.lang.ProcessImpl.start(ProcessImpl.java:130)
在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
... 3 更多
这对我来说毫无意义。 bash 文件显然存在,因为我只是将它与 String 命令一起使用,但是当我将相同的内容与 String[] 命令一起使用时,它不存在吗?我如何传递带参数的命令?
最佳答案
String[] command ={"bash bash/testbash.sh"};
String[] command ={"bash", "bash/testbash.sh"};
关于java - 将 Runtime.exec() 与 String [ ] 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724404/