有人能给我解释一下为什么当我从Java运行同一个命令时会得到不同的输出吗
当我运行命令时 “pmset-g batt | egrep'([0-9]+\%).'-o--COLOR=auto | cut-f1-d';” 在OSX终端中,它输出电池百分比(例如55%) 但是当我在Java代码中运行相同的命令时,我得到 “当前从“电池电源”提取” 下面是它在我的Java代码中的外观:有人能给我解释一下为什么当我从Java运行同一个命令时会得到不同的输出吗,java,osx-lion,Java,Osx Lion,当我运行命令时 “pmset-g batt | egrep'([0-9]+\%).'-o--COLOR=auto | cut-f1-d';” 在OSX终端中,它输出电池百分比(例如55%) 但是当我在Java代码中运行相同的命令时,我得到 “当前从“电池电源”提取” 下面是它在我的Java代码中的外观: String cmd = "pmset -g batt | egrep '([0-9]+\\%).*' -o --colour=auto | cut -f1 -d';'"; Runtime rt
String cmd = "pmset -g batt | egrep '([0-9]+\\%).*' -o --colour=auto | cut -f1 -d';'";
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
BufferedReader stdOutput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String output = stdOutput.readLine();
System.out.println(output);
我以为这和我正在使用的双反斜杠有关,但我检查了一下,我不认为这是原因
谢谢我认为您需要从您的流程中了解更多信息,您应该使用一个
您是否考虑过从stdOutput获取多条线路?
for (;;) {
String output = stdOutput.readLine();
if (output == null) {
break;
}
System.out.println(output);
}