在我的脚本中,我基本上需要等待 linux 机器上的网络接口(例如 en0、eth0 等)完全初始化,然后我的脚本才能继续执行。等待时我不想要任何输出,我正在等待这样的:
#!/bin/bash
printf "\nWaiting for the network to start...\n"
ping_status=$(ping -c 1 server &>/dev/null | egrep -m 2 -e "[0-9]+")
i=0
while [ -z "$status" ]
do
if [ "$i" -eq 30 ]
then
printf "\nServer unresponsive for 30 seconds. Quitting script\n"
exit 1
else
sleep 1
i=$((i+1))
ping_status=$(ping -c 1 server &>/dev/null | egrep -m 2 -e "[0-9]+")
fi
done
问题是我得到以下输出,直到我的网络被初始化:
connect: Network is unreachable
connect: Network is unreachable
该命令ping -c 1 server &>/dev/null | egrep -m 2 -e "[0-9]+"
正确解析了成功 ping 的第二行并告诉我字节,所以我知道如果返回为 null,则网络未启动。
但是,由于某种原因,我egrep
在当前目录中得到了一个实际文件,但仍然得到上述输出connect: Network is unreachable
- 如何测试成功的 ping 并丢弃所有输出和错误?