我有一个简单的脚本来检查接口是否已连接:
connected=$(ping -I $1 -qc 1 8.8.8.8 \
&& echo "connected" \
|| echo "not connected")
echo "$connected" | tail -n1
我期望它应该简单地返回“已连接”或“未连接”。当我实际使用该脚本时,我总是在输出之前收到警告。
ping: Warning: source address might be selected on device other than enp0s25.
not connected
这里的警告是怎么回事,它不应该是子shell的一部分吗?
答案1
警告被发送到ping
的标准错误,但不会被捕获。如果您想忽略它,请将其/dev/null
明确重定向到:
connected=$(ping -I $1 -qc 1 8.8.8.8 2>/dev/null \
&& echo "connected" \
|| echo "not connected")
echo "$connected" | tail -n1