Linux 成功ping时打开firefox的Bash脚本
正如标题所示,我正在尝试使用bash ping一个服务器,当它获得连接时,它将打开Firefox到一个显示报警屏幕的页面。这将在断电后发生,当计算机自动启动时,有时可能需要时间连接到网络。如果我将Firefox设置为启动时启动,那么有时它会显示无连接屏幕 这是我已经拥有的,但在成功的ping之后,它似乎并没有停止Linux 成功ping时打开firefox的Bash脚本,linux,bash,ping,Linux,Bash,Ping,正如标题所示,我正在尝试使用bash ping一个服务器,当它获得连接时,它将打开Firefox到一个显示报警屏幕的页面。这将在断电后发生,当计算机自动启动时,有时可能需要时间连接到网络。如果我将Firefox设置为启动时启动,那么有时它会显示无连接屏幕 这是我已经拥有的,但在成功的ping之后,它似乎并没有停止 #!/bin/bash success=0 ping hercules while [ $success -ne 1 ]; do ping -c 4 hercules
#!/bin/bash
success=0
ping hercules
while [ $success -ne 1 ]; do
ping -c 4 hercules
if [ $? -eq 0 ]; then
success=0
/usr/bin/firefox
else
success=1
fi
done
我确信我正在做一些非常愚蠢的事情,这应该不会那么难。如果我正确理解了你的问题,你想要的是继续发出ping声。成功后,是否启动firefox并停止ping?当它失败时,您当前正在设置
success=1
,然后退出while
循环,因为success-ne 1
为false
#!/bin/bash
success=0
ping hercules
while [ $success -ne 1 ]; do
ping -c 4 hercules
if [ $? -eq 0 ]; then
success=1
/usr/bin/firefox
fi
done
要修复脚本,只需在成功后退出脚本即可:
#!/bin/bash
while true ; do
if ping -c 4 hercules ; then
/usr/bin/firefox
exit 0
fi
done
当
$success
不等于1
但在成功/终止案例中设置success=0
时,您正在循环。感谢所有人,因为我认为我做了一些愚蠢的事情,此时不需要ping。没有理由将ping
保留在if
语句之外<代码>如果ping-C4 hercules;然后就可以了。不完全可以。放下[
]
@EtanReisner谢谢!:)没有理由在if
语句中保留ping
<代码>如果ping-C4 hercules;然后就可以了。同意hek2mgl
显示最清晰的答案。我只是想给OP一个修改过的代码,按照他最初的推理工作,但是没有“bug”。感谢这确实有帮助,我还注意到我在while循环外有一个ping,显然它只是在持续运行。当然。hek2mgl做了与您最初做的相同的事情,我也在那里发表了评论。
#!/bin/bash
ping -t 1 8.8.8.8 #(-t on mac / else it -w)
SUCCESS=0
RETVAL=$?
while [ $SUCCESS -ne 1 ]; do
if [ $RETVAL -eq 0 ]; then
SUCCESS=1
'LAUNCH FIREFOX HERE IF THE PING WORKS'
else
'DO SOMETHING'
fi
done