Linux 管道、警告消息、标准输出

jin*_*wow 3 linux pipe stdout

这可能是以最简单的形式提出问题的最佳场所。我正在编写一个脚本,它获取命令的输出并将其放入变量中。经过一些调试后,我找出了错误时的命令,它没有转到标准输出而是转到控制台(或墙)。请参阅下面的示例:

命令运行成功时

root@local# apcaccess status
APC : 700
VERSION : xxxxx
BATTSTAT : AC
Run Code Online (Sandbox Code Playgroud)

当命令出错时

root@local# apcaccess status
apcupsd @ localhost: Connection Refused.

root@local# apcaccess status | grep -i version
apcupsd @ localhost: Connection Refused.
Run Code Online (Sandbox Code Playgroud)

我注意到当我尝试通过 grep 'apcaccess status | 管道命令时 grep -i version' 我会在成功运行时获得版本号,但在系统上它会出错,我会收到错误消息。我相信它不会通过标准输出。

问题是:如何强制输出转到标准输出?

小智 6

# apcaccess status 2>&1 | grep -i version
Run Code Online (Sandbox Code Playgroud)

这会将 stderr 重定向到 stdout,因此 grep 将看到输出。