naw*_*bgh 7 bash shell terminal-emulator
我写了这个bash脚本,以便在互联网变得可访问时发出通知,但我不了解许多正在发生的事情.这是脚本:
while ! ping 8.8.8.8 -c 1 2&> /dev/null ; do true; done;
Run Code Online (Sandbox Code Playgroud)
-c 1
选项告诉ping
我只想发送一个数据包.2&> /dev/null
是因为我不想看到输出.true
是因为bash
不接受do;
语法.! ping ...
因为ping
在某些数据包之前没有收到数据包时返回非零状态代码timeout
.预期的行为是在ping
成功结束时此循环结束,终端仿真器将自动向我发送通知.
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
Run Code Online (Sandbox Code Playgroud)