2013-04-05 83 views
0

我想在java程序中執行以下命令。但它只執行第一部分。 |之後的部分不執行getRuntime與管道?

Process process = Runtime.getRuntime().exec(" adb devices | tail -n +2 | cut -sf 1"); 

     process.waitFor(); 

回答

1

你需要在shell中運行它。試試這個:

Process process = Runtime.getRuntime().exec(new String[] { 
     "/bin/sh", 
     "-c", 
     "adb devices | tail -n +2 | cut -sf 1" 
}); 
process.waitFor(); 
+0

它的工作原理,謝謝。 – Zizou 2013-04-05 13:08:25

0

改爲使用腳本,因爲Pipe本身是shell的一部分。

或做這樣的事情:

String[] commands = { 
"/bin/sh", 
"-c", 
"ls /etc | grep release" 
}; 

Process p = Runtime.getRuntime().exec(commands);