Я пытаюсь экранировать символ "$" при выполнении echo $! команда в Java.
static def execSync(String command) throws Exception {
log.info("exec(" + command + ")")
String[] splited = command.split("\\s+")
def listCommand = Arrays.asList(splited)
ProcessBuilder processBuilder = new ProcessBuilder()
processBuilder.command(listCommand)
return processBuilder.start()
}
execSync("echo \$!") // returns $! when i'd like a pid
Я обнаружил, что проблема заключается в команде, которая выполняется (т. Е. Код выше), а не в моем способе получить стандартный вывод команды (outputtream blabla). Если вы абсолютно уверены, что это не так, я покажу больше.
Когда я выполняю в своей системе (centOs 7) "echo $!" Я, очевидно, получаю pid, например: 2626.
Я бы в основном хотел узнать, есть ли способ сделать "echo $!" как в системе со строкой в моей функции? (регулярное выражение или другие вещи)
В противном случае,
ProcessBuilder.start возвращает Process, но, похоже, у него нет метода для получения pid, только exitReturn, out / in / error stream ... Так как я выполняю предыдущую команду с помощью метода, показанного выше, я могу получить pid с помощью команды linux.
Итак, есть ли способ получить pid предыдущего процесса? (не совсем то, что я ищу, но я могу справиться, если нет другого пути)
Я застрял с Java 8, когда у Java 9 есть метод "getPid"