我正在尝试构建一个单行命令来监视我的互联网连接下降时的情况。
我希望这样,如果我无限期地运行ping www.google.com (每秒一个ping ),如果输出行中存在单词"timeout“,那么另一个命令就会运行,但是ping命令将继续无限期地运行。
我在OS上运行这个命令,所以另一个命令是say fail,所以如果我不看终端窗口,我就能听到有问题。
如果它不能是一行命令,那么bash脚本就可以了。
我试过这个:
ping www.google.com | grep timeout ; say fail
但是,这只能在用户手动终止say命令之后执行ping命令。
然后我试了一下:
if ping www.google.com | grep timeout ; then say fail ; fi
但这不会执行say命令。
发布于 2016-01-18 16:46:35
您的问题来自ping命令,它从不退出。
您应该为一个测试ping创建一个调用-c 1的循环:
while [ true ] ; do if ping -c 1 www.google.com | grep timeout ; then say fail ; fi ; sleep 1 ; done编辑
bash been循环,也许你应该把它改编成你的shell程序(我玩mac已经很长时间了),https://unix.stackexchange.com/questions/256110
复制相似问题