我想使用 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
如果您希望 ls
和 pwd
作为单独的命令运行,您可以使用 Bash(或其他 shell 语言)将它们包装成一个命令:
bash -c 'ls ; pwd'
你可以这样调用:
ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "ls ; pwd");
关于Java ProcessBuilder 开始在 Linux 中顺序执行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268550/