繁体   English   中英

Bash 无需重定向即可回显到 Stderr 的过程

[英]Bash Process To Echo to Stderr WITHOUT Redirection

我在使用 ProcessBuilder 的另一种语言(Java)中,但这有点离题。 我需要一个 bash 进程,它将写入我可以使用 ProcessBuilder 调用的 stderr。

例子:

ProcessBuilder pb = new ProcessBuilder("echo", "a");
Process p = pb.start();
p.getErrorStream(); // I need this to return "a".

我试过在ProcessBuilder的构造函数中添加 ">&2" ,但它说没有命令>&2 我试过使用echoerr ,但那是 bash function,不是真正的命令,所以找不到。 有没有我可以在不转发返回 stderr 的情况下使用的命令? Awk? Perl? 任何事物? :D

您可以使用bash (或sh )运行命令以使用重定向运算符:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class StdErr {
    public static void main(String[] args) throws IOException {
        ProcessBuilder pb = new ProcessBuilder("sh", "-c", "echo a >&2");
        Process p = pb.start();
        try (BufferedReader r = new BufferedReader(new InputStreamReader(p.getErrorStream()))) { // I need this to return "a".
            r.lines().forEach(System.err::println);
        }
    }
}

输出: a (到 Java 进程的标准错误流)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM