我需要在新的控制台窗口中启动一个进程。对于 Mac,我发现了这样的内容:在新的 Mac OS X 终端窗口中运行命令,其中要运行的命令作为字符串传递。
所以我做了一个给定字符串列表的方法(如进程构建器),返回将在新控制台窗口中运行给定命令的字符串列表(最终命令)。我可以在给定的字符串后面加上空格,这在大多数情况下都可以工作,但是我该如何正确地转义呢?例如,我可以通过流程构建器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...'
};
}