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
是标准输入的默认数字。