从JVM运行bash脚本

时间:2010-02-13 20:03:21

标签: jvm runtime.exec processbuilder

我在使用Java运行简单的bash脚本时遇到了麻烦。具体做法是:

...

try{
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", command);
pb.directory(new File(dir));
Process shell = pb.start();
int exitVal = shell.waitFor();

... 其中'command'是可由所有人执行的bash脚本的绝对路径,'dir'是工作目录。

当我运行程序时,我得到一个退出代码127(“找不到命令”)。我尝试过使用Java Runtime类和process.exec方法,但都没有对我有用。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

没有-c。这意味着脚本是-c的参数。您传递的是路径名,并且不使用-c。

答案 1 :(得分:0)

如果“command”是一个bash脚本,那么不要将“/ bin / bash”(以及你正在做的错误的“-c”)传递给ProcessBuilder,只需确保该命令是可执行的(chmod + x)命令),第一行是#!/bin/bash,然后将完整路径传递给ProcessBuilder。