抑制 iproute2 错误消息

抑制 iproute2 错误消息

iproute2 在失败时出现一条消息,我不知道如何抑制它。

我想将 iproute2 的输出保存到变量中以供日后使用。如果我的网络正常运行,则输出如下:

sudo ip link set wlan0 up
ROUTE=$(ip route get 8.8.8.8)
printf "Route is:\n${ROUTE}"
Route is:
8.8.8.8 via 192.168.1.1 dev wlan0 src 192.168.1.17 uid 1000
    cache

如果我的网络断了,我会得到一个不想要的产物:

sudo ip link set wlan0 down
ROUTE=$(ip route get 8.8.8.8)
printf "Route is:\n${ROUTE}"
RTNETLINK answers: Network is unreachable
Route is:

所以我不确定是什么产生了这个消息RTNETLINK answers: Network is unreachable,或者如何抑制这个消息。

答案1

该消息是ip在标准错误输出中生成的。

在您的终端中,标准输出和标准错误输出都会打印在终端中。

使用var=$(command ...)语法,您只会在变量中获得标准输出,但错误输出将由终端打印。

2>/dev/null您可以在命令后将错误输出重定向到垃圾箱。如下所示:

ROUTE=$(ip route get 8.8.8.8 2>/dev/null)

为什么2?在 POSIX 系统(UNIX 和 Linux)上,1是标准输出的默认数字,2是错误输出的默认数字。0是标准输入的默认数字。

相关内容