Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 成功ping时打开firefox的Bash脚本_Linux_Bash_Ping - Fatal编程技术网

Linux 成功ping时打开firefox的Bash脚本

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

正如标题所示,我正在尝试使用bash ping一个服务器,当它获得连接时,它将打开Firefox到一个显示报警屏幕的页面。这将在断电后发生,当计算机自动启动时,有时可能需要时间连接到网络。如果我将Firefox设置为启动时启动,那么有时它会显示无连接屏幕

这是我已经拥有的,但在成功的ping之后,它似乎并没有停止

#!/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