2017-03-07 5 views
0

Ich versuche, einen Linux-Befehl ausgeführt werden soll (mit Rohren)Wie Linux-Befehl aus java

mit so etwas wie laufen:

Runtime.getRuntime().exec("rpm -qa | grep "Uploader" | xargs rpm --queryformat "%{VERSION}" -q"); 

aber ich bekomme als Ergebnis nur die Ausgabe der " rpm -qa "

können Sie helfen?

dank

+0

Sie könnten Ihren Befehl in einem Skript versuchen setzen und rufen. Java wird verwirrt, wenn mehrere Parameter vorhanden sind. –

+1

Weder Java noch RPM kennen Pipes. Shell kennt Rohre. Also ist es am besten, wenn Sie Ihre Pipe in ein kleines Shell-Skript einfügen und das ausführen! –

+0

Mögliches Duplikat von [möchte einen Linux-Shell-Befehl von Java aufrufen] (http://stackoverflow.com/questions/1410741/want-to-invoke-a-linux-shell-command-from-java) –

Antwort

3

Nur ein Shell-Rohren versteht, können Sie die Shell mit dem Befehl, den Sie ausführen möchten, rufen:

exec(new String[]{"/bin/sh", "-c", "rpm -qa | grep \"Uploader\" | xargs rpm --queryformat \"%{VERSION}\" -q"});