我需要在新的控制台窗口中启动一个进程。对于Mac,我发现了以下内容:Running a command in a new Mac OS X Terminal window其中要运行的命令以字符串形式传递。
因此,我制作了一种方法,该方法给出了一个字符串列表(如流程生成器),返回了字符串列表(最终命令),该列表将在新的控制台窗口中运行给定命令。我可以在给定的字符串后加上空格,这在大多数情况下都可以使用,但是如何正确地对其进行转义呢?例如,我可以通过流程生成器new String[] { "echo", "hello world" }
,而实际上它是echo "hello world"
。它也处理许多其他情况(我认为)。
我认为解释很复杂,所以这里是一个伪存根:
public static String[] getConsoleCommand(String[] command) {
if operating system is Mac...
String commandString = concatenate command...
return new String[] { "osascript", "-e",
String.format("'tell application \"Terminal\" to do script \"%s\"'",
commandString.replace("'", "\\\'")) // escape single quote used in 'tell application...'
};
}
最佳答案
import org.apache.commons.lang.StringEscapeUtils;
for(int i = 0;i <arrayCommand.length();i++) {
arrayCommand[i] = StringEscapeUtils.escapeJava(unescapedJava);
}
关于java - Java ProcessBuilder获取构建命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15713982/