我正在运行一个脚本,该脚本依赖于网络正常运行并安装网络共享。该脚本在登录时运行(启动后会自动发生)。问题在于,在脚本运行时,我通常还没有IP地址(DHCP)。目前,我只是将脚本休眠15秒钟,但是我根本不喜欢这种方法,因为我希望能够告诉用户是否有问题。
我的计划是,在没有IP地址的情况下进行循环,然后再继续。至关重要的是,它必须在一段时间后超时。我if [ ifconfig | grep "192.168.100" ];
想到的是,但是发生的是grepconsumes ];
和不喜欢它。然后bash也变得不高兴,因为它找不到那个];
grep吃了。然后,我什至没有执行超时。
有人建议保留一个变量,并在每次迭代中睡一秒钟,然后每次增加该变量。这是我完整的(不起作用的)脚本(我对bash脚本还很陌生):
x=0
while [ ifconfig | grep "192.168.100." > /dev/null ]; do
echo "no nework"
if "$x" -gt 200; then
#Time out here
exit 1
x=$((x+1))
sleep .1
fi
done
#continue with rest of script...
任何朝着正确方向的指针将不胜感激!
grep
输出重定向到/dev/null
。使用-q
选项代替。而且我也不认为grep ifconfig是个好主意。为什么不使用它ping
呢?
ping
可能会失败,具体取决于所讨论的网络。最好只检查系统的运行配置。
network-online.target
... 的服务文件