我需要在新的控制台窗口中启动一个进程。对于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...'
};
}
答案 0 :(得分:0)
import org.apache.commons.lang.StringEscapeUtils;
for(int i = 0;i <arrayCommand.length();i++) {
arrayCommand[i] = StringEscapeUtils.escapeJava(unescapedJava);
}