如何从子shell中打印STDERR?

时间:2015-12-21 22:24:05

标签: bash shell pipeline io-redirection

使用How can you diff two pipelines in Bash?中的答案我写了一些shell脚本,我想比较输出:

diff <(script1 | script2) <(script3 | script4)

但是,在子shell管道的任何脚本中打印到STDERR的任何错误都会消失。如何让它们在我的外层脚本(包含差异)中打印?

1 个答案:

答案 0 :(得分:2)

来自脚本1..4的错误消息不应该消失在黑洞中;您只将标准输出重定向为@Entity public class MyEntity { private String label1; private String label2; @Transient private String complexLabel; @PostLoad @PostUpdate // See EDIT // ... public void computeComplexLabel(){ complexLabel = label1 + "::" + label2; } } 的文件。

例如,给定这些文件:

diff

命令行的输出是:

$ cat script1
#!/bin/bash
echo $0 stdout
echo $0 stderr >&2
$ cat script2
#!/bin/bash
echo $0 stdout
cat -
echo $0 stderr >&2
$ cat script3
#!/bin/bash
echo $0 stdout
echo $0 stderr >&2
$ cat script4
#!/bin/bash
echo $0 stdout
cat -
echo $0 stderr >&2
$