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 に答える