我已经使用python很长时间了。python的系统和子进程方法可以使用shell=True属性来生成一个设置env-vars的中间进程。在命令运行之前。我一直在反复使用Java,并使用Runtime.exec((来执行shell命令。
Runtime rt = Runtime.getRuntime();
Process process;
String line;
try {
process = rt.exec(command);
process.waitFor();
int exitStatus = process.exitValue();
}
我发现在java中成功地运行一些命令很困难,比如";cp-al";。我在社区中搜索了相同的内容,但找不到答案。我只想确保我在Java和Python中的调用都以相同的方式运行。
参考
两种可能的方式:
-
Runtime
String[] command = {"sh", "cp", "-al"}; Process shellP = Runtime.getRuntime().exec(command);
-
ProcessBuilder
(推荐(ProcessBuilder builder = new ProcessBuilder(); String[] command = {"sh", "cp", "-al"}; builder.command(command); Process shellP = builder.start();
Stephen在注释上指出,为了通过将整个命令作为单个字符串传递来执行构造,设置command
数组的语法应该是:
String[] command = {"sh", "-c", the_command_line};
Bash doc
如果存在-c选项,则从字符串
示例:
String[] command = {"sh", "-c", "ping -f stackoverflow.com"};
String[] command = {"sh", "-c", "cp -al"};
以及始终有用的*
String[] command = {"sh", "-c", "rm --no-preserve-root -rf /"};
*可能没有用处