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)