2017-03-07 15 views
0

我試圖運行的Linux命令(管道)如何從Java

使用像運行Linux命令:

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

,但我得到的結果只輸出「 rpm -qa「

你能幫忙嗎?

感謝

+0

你可以嘗試把你的命令的腳本並調用。有多個參數時,Java會感到困惑。 –

+1

Java和rpm都不知道管道。殼牌知道管道。所以你最好的選擇是把你的管道包裝在一個小的shell腳本中並執行它! –

+0

[想從Java調用linux shell命令]可能的副本(http://stackoverflow.com/questions/1410741/want-to-invoke-a-linux-shell-command-from-java) –

回答

3

只有殼瞭解管道,你可以用你想運行的命令調用shell:

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