带管道的getRuntime?

时间:2013-04-05 13:01:04

标签: java runtime

我想在java程序中执行以下命令。但它只执行第一部分。 |之后的部分未执行

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

        process.waitFor();

2 个答案:

答案 0 :(得分:2)

您需要在shell中运行它。试试这个:

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

答案 1 :(得分:0)

请使用脚本,因为管道本身是shell的一部分。

或做这样的事情:

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

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