Korzystanie z pomocy Groovy i jej obsługi java.lang.Process
, w jaki sposób mogę połączyć wiele poleceń powłoki?Używając groovy, jak potokować polecenia wielu powłok?
Rozważmy to polecenie bash (a zakładamy, że nazwa jest foo
):
ps aux | grep ' foo' | awk '{print $1}'
ten wypisze nazwy użytkownika - jeden wiersz dla niektórych procesów związanych z kontem użytkownika.
Korzystanie Groovy, dokumentacja ProcessGroovyMethods i kod mówi, że powinienem być w stanie to zrobić, aby osiągnąć ten sam rezultat:
def p = "ps aux".execute() | "grep ' foo'".execute() | "awk '{print $1}'".execute()
p.waitFor()
println p.text
Jednak nie mogę uzyskać żadnych wyjście tekstu do niczego innego niż to:
def p = "ps aux".execute()
p.waitFor()
println p.text
Zaraz po uruchomieniu instalacji drukarka nie drukuje niczego.
Myśli?
Podczas gdy odpowiedź @ tim_yates rozwiązała mój szczególny problem w inny sposób (i jestem bardzo wdzięczny za to), ta odpowiedź odnosi się do pytania OP operatora 'lub' Groovy i 'Procesu 'obiekty, więc ją nagrodzę. Dzięki! –