根据“ Linux:完全参考第六版 ”(第44页),您只能使用|&
重定向符号通过管道传输STDERR 。
我已经编写了一个非常简单的脚本来对此进行测试:
#!/bin/bash
echo "Normal Text."
echo "Error Text." >&2
我这样运行此脚本:
./script.sh |& sed 's:^:\t:'
大概只有缩进STDERR的行会缩进。但是,正如我所看到的,它实际上并不像这样工作:
Normal Text.
Error Text.
我在这里做错了什么?
./script.sh > /tmp/stdout_goes_here |& grep 'grepping_script_stderr'
无法按预期运行,即:redirectscript.sh
的stdout
(根据手动代码片段应首先发生),然后允许grep
处理脚本的stderr
。相反,stderr
并且tdout`都以stdout_goes_here