Java ProcessBuilder 开始在 Linux 中顺序执行多个命令

标签 java processbuilder

我想使用 ProcessBuilder 类通过我的 Java 应用程序顺序执行 2 个或更多命令。我已经按照其他回复/论坛中的建议尝试了多种选择,但没有成功。

以下是我尝试过的方法:

    ProcessBuilder processBuilder = new ProcessBuilder("ls", ";", "pwd");

给我以下错误:

错误:ls: ;: 没有那个文件或目录 错误:ls: pwd: 没有那个文件或目录

    ProcessBuilder processBuilder = new ProcessBuilder("ls", "&&", "pwd");

给我类似的错误:

错误:ls: &&: 没有那个文件或目录 错误:ls: pwd: 没有那个文件或目录

    List<String> command = new ArrayList<String>();
    command.add("ls");
    command.add(";");
    command.add("pwd");
    ProcessBuilder processBuilder = new ProcessBuilder(command);

给我以下错误:

错误:ls: ;: 没有那个文件或目录 错误:ls: pwd: 没有那个文件或目录

我的操作系统是 Linux/Mac-OSX。

最佳答案

您的方法等同于使用指定参数调用 ls。在 Bash 表示法中,您正在运行的是:

ls ';' pwd
ls '&&' pwd

如果您希望 lspwd 作为单独的命令运行,您可以使用 Bash(或其他 shell 语言)将它们包装成一个命令:

bash -c 'ls ; pwd'

你可以这样调用:

ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "ls ; pwd");

关于Java ProcessBuilder 开始在 Linux 中顺序执行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268550/

相关文章:

Java 在新终端 (mac osx) 中开始运行命令 - 进程生成器未正确运行 osascript

java - ProcessBuilder 最后执行

java - 独立于平台的方式获取当前java可执行路径和文件名

java - 如何让 "Enum.CONSTANT"返回某种类型(例如颜色)?

java - Tomcat 5.5 : The requested resource is not available

java - 使用递归来获取数组的子集。 C++ 和 Java 给我不同的结果

java - 当java进程被杀死时,java调用的shell脚本是否也会被杀死?

java - 使用 Processbuilder 运行 jar 无法正常工作

java - 如何从资源文件夹java调用文件

java - 如何在没有textfield或textarea的java中获取keyevent?