使用BufferedReader读取java中终端命令的输出

使用BufferedReader读取java中终端命令的输出,java,terminal,ifconfig,output,Java,Terminal,Ifconfig,Output,java的Noobie刚刚起步,希望您能提供帮助。所以我的代码是这样的,出于某种原因,我无法让输出正常工作..我已经坐了好几个小时了 package askisi1; import java.net.*; import java.util.*; import java.lang.*; import java.io.*; public class Main{ public static void main(String[] args){ try{ String

java的Noobie刚刚起步,希望您能提供帮助。所以我的代码是这样的,出于某种原因,我无法让输出正常工作..我已经坐了好几个小时了

package askisi1;

import java.net.*;
import java.util.*;
import java.lang.*;
import java.io.*;


public class Main{

public static void main(String[] args){

    try{

        String command = "ifconfig eth1 | grep -oP '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}'";
        Process child = Runtime.getRuntime().exec(command);

        System.out.println("So far so good");
        BufferedReader r = new BufferedReader(new InputStreamReader(child.getInputStream()));
        String s;
        while ((s = r.readLine()) != null) {
        System.out.println(s);
        }
        r.close();
        System.out.println("Continue..");
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}



} 
Runtime.exec()
需要一些附加信息来执行Unix命令

因此,假设我的以太网卡是
lo0

String[] command = {
                    "/bin/sh",
                    "-c",
                    "ifconfig lo0 | grep -oP '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}'"
            }; 
Process child = Runtime.getRuntime().exec(command);
// following here your remaining unchanged code
这张照片是:

So far so good
127.0.0.1
Continue..

这可能有点重复,让您运行命令以确保它生成输出?@WolfgangFahl在发布问题之前,我研究了您发布的问题,但使用线程似乎太复杂,因为我不熟悉ProcessBuilder。感谢您指出这一点。@jozefg是的,该命令在终端中生成正确的输出