Выполнить длинную команду с groovy на оболочке Linux?
Как я могу выполнить длинную команду с groovy? Когда я выполняю эту команду на своем терминале Linux, я получаю правильный идентификатор процесса, который мне нужен. Используя groovy, я получаю пустой возврат. Вот что я уже пробовал:
def p = "ps aux | grep 'unit 1' | grep -v grep | awk '{print $2}'".execute()
p.waitFor()
println p.text // this is empty, but it shouldn't
Как должно выглядеть правильное исполнение с Groovy? Как получить правильный идентификатор процесса в Groovy?
1 ответ
Решение
Это своего рода дубликат из двух вопросов в комментариях (плюс некоторые другие, которые я не могу найти в данный момент), но попробуйте:
def cmd = /ps aux | grep 'unit 1' | grep -v grep | awk '{print $2}'/
def out = [ '/bin/sh', '-c', cmd ].execute().text.trim()
println out