2013-04-05 2 views
0

Я хочу выполнить следующую команду в java-программе. Но он выполняет только первую часть. часть после | не выполняетсяgetRuntime с трубой?

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

     process.waitFor(); 

ответ

1

Вам необходимо запустить это в оболочке. Попробуйте следующее:

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

Он работает, спасибо. – Zizou

0

Используйте сценарий вместо этого, поскольку сама труба является частью оболочки.

ИЛИ сделать что-то вроде этого:

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

Process p = Runtime.getRuntime().exec(commands); 
Смежные вопросы