gpt4 book ai didi

linux - 如何将 stderr 重定向到 stdout 和 stderr 本身

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:55 26 4
gpt4 key购买 nike

我想要做的是将 stderr 重定向到 stdout,而不更改 stderr 的输出。

比如说,命令在stderr中有输出,我想将stderr中的所有内容输出到屏幕,同时还通过grep处理信息并将其保存到变量中。

我试过了

line=$(command 2>&1  | grep 'aaa' )

$line 已传递所需信息,但屏幕不显示任何输出。

我试过了

line=$(command 2>&1 | tee >&2 |grep 'aaa' )

这对于屏幕上的信息输出来说可以很好地工作,但是 $line 没有获得任何值。

最佳答案

您可以使用重定向以正确的顺序复制流。考虑:

% cat out.sh
echo "OUT"
echo "ERR" 1>&2

运行:

% sh out.sh 1>&2 2>&1 | grep OUT > /tmp/a
ERR
OUT
% cat /tmp/a
OUT

这似乎正是您所期望的。现在为什么它有效?

  • 1>&2stdout 复制到 stderr
  • 2>&1stderr 复制到 stdout

因此 stdout 和 stderr 都获得相同的流。然后对 stdout 进行 grep 处理。

关于linux - 如何将 stderr 重定向到 stdout 和 stderr 本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32608185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com