Выполнить длинную команду с 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
Другие вопросы по тегам