加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

用于访问互联网的通知的Bash脚本

发布时间:2020-12-16 01:21:48 所属栏目:安全 来源:网络整理
导读:我写了这个bash脚本,以便在互联网变得可访问时发出通知,但我不了解许多正在发生的事情.这是脚本: while ! ping 8.8.8.8 -c 1 2 /dev/null ; do true; done; -c 1选项告诉ping我只想发送一个数据包. 2 / dev / null是因为我不想看到输出. 是的,因为bash不接
我写了这个bash脚本,以便在互联网变得可访问时发出通知,但我不了解许多正在发生的事情.这是脚本:
while ! ping 8.8.8.8 -c 1 2&> /dev/null ; do true; done;

> -c 1选项告诉ping我只想发送一个数据包.
> 2&> / dev / null是因为我不想看到输出.
>是的,因为bash不接受这样做;句法.
>终止条件是! ping …因为在一些超时之前没有收到数据包时ping返回非零状态代码.

当ping成功并且终端模拟器将自动向我发送通知时,预期的行为是此循环结束.

问题

>即使可以访问Internet,此命令也不会结束.
>尝试使用ctrl C终止命令不起作用.我认为这会破坏子命令ping而不是整个命令.
>仅删除2&> / dev / null使得每件事都有效,除了它将输出写入终端的次要问题.

问题

>我的命令出了什么问题?
>终端仿真器对ctrl C的反应究竟如何?
>为什么删除2&> / dev / null让它工作?

请注意,我已经有了转机.不过我还是想了解一下bash.

f() { while ! ping 8.8.8.8 -c 1 ; do true; done; }; f 2&> /dev/null
正确的重定向运算符是&>,而不是2&>. 2被解析为ping的单独参数,并且因为ping 2永远不会成功,所以循环永远不存在.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读