telnet test | grep -o Unable
telnet: Unable to connect to remote host: Connection refused
结果应该只有“无法”。
答案1
telnet
无法连接时输出的错误信息打印到标准错误溪流。默认情况下,标准错误流直接发送到终端。您只能通过管道传输标准输出流到其他命令(grep
在本例中)。
您可以通过重定向的方式将错误流发送到标准输出流:
telnet test 2>&1 | grep -o Unable
这将合并两个流并grep
充当合并的数据流。
如果您想捕获 中的错误情况telnet
,也可以使用该实用程序的退出状态:
if ! telnet test 2>/dev/null; then
echo 'something went wrong with telnet'
exit 1
fi
echo 'telnet ran successfully'
telnet
如果返回非零退出状态(表示某种失败),这将退出脚本。我还重定向了错误流以/dev/null
将其完全丢弃。
答案2
看起来该消息已打印到 stderr,因此请执行以下操作:
telnet test 2>&1 | grep -o Unable
在 bash 和 ZSH 中,您还可以使用|&
:
telnet test |& grep -o Unable