1

我需要在新的控制台窗口中启动一个进程。对于 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...'
        };
}
4

1 回答 1

0
import org.apache.commons.lang.StringEscapeUtils;

for(int i = 0;i <arrayCommand.length();i++) { 
  arrayCommand[i] = StringEscapeUtils.escapeJava(unescapedJava);
}
于 2013-03-30T01:51:11.723 回答