从Java执行bash脚本

时间:2019-02-18 09:30:37

标签: java bash

我正在尝试通过以下方式为Java程序执行bash脚本文件:

Runtime.getRuntime().exec("./path/to/bash"); 

但这似乎不是正确的方法,因为它返回以下异常:

 java.io.IOException: Cannot run program "./path/to/bash": error=2, No such file or directory

正确的方法是什么?

3 个答案:

答案 0 :(得分:2)

java.io.IOException: Cannot run program "./path/to/bash": error=2, No such file or direct

这意味着文件路径错误。 请再次检查文件路径。 哪个文件夹包含此文件?

答案 1 :(得分:1)

要使用Java执行任何bash命令,您可以使用Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")之类的命令-这将删除当前工作目录中所有扩展名为.foo的文件

答案 2 :(得分:1)

最近,我使用以下方法执行bash脚本。

 Process exec = getRuntime().exec("/home/user/test/test.sh");
        java.util.Scanner s = new java.util.Scanner(exec.getInputStream()).useDelimiter("\\A");
        System.out.println(s.next());

每当我尝试getRuntime().exec("./home/user/test/test");时,我都会得到您遇到的确切错误。 java.io.IOException: Cannot run program "./home/user/test/test": error=2, No such file or directory。 要从任何目录执行任何命令,请遵循以下方法。

String []command ={"/bin/bash","-c", "ls"};
Process exec = getRuntime().exec(command,null,new 
     File("/home/user/test"));
java.util.Scanner s = new java.util.Scanner(exec.getInputStream()).useDelimiter("\\A");
System.out.println(s.next());

希望这对您有所帮助。