Java processbuilder获取构建命令

时间:2013-03-30 01:41:38

标签: java console processbuilder

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

1 个答案:

答案 0 :(得分:0)

import org.apache.commons.lang.StringEscapeUtils;

for(int i = 0;i <arrayCommand.length();i++) { 
  arrayCommand[i] = StringEscapeUtils.escapeJava(unescapedJava);
}