Я думаю, что это нужно изменить в условие while, в данный момент оно будет ждать, пока все 10000 пингов не будут выполнены, мне нужно, чтобы оно вернулось, когда пинг будет успешным. Программа "say" на OSX заставляет компьютер говорить.
#!/bin/bash
echo begin ping
if ping -c 100000 8.8.8.8 | grep timeout;
then echo `say timeout`;
else echo `say the internet is back up`;
fi
ОК. У меня нет прав отвечать на мой вопрос, поэтому вот мой ответ после игры:
Спасибо, да, я не знал о $? до сих пор. Во всяком случае, теперь я пошел и сделал это. Мне нравится, что ваш не вечен, но в моей ситуации мне не нужно было останавливаться, пока он не закончится.
#!/bin/bash
intertube=0
echo "begin ping"
while [ $intertube -ne 1 ]; do
ping -c 3 google.com
if [ $? -eq 0 ]; then
echo "ping success";
say success
intertube=1;
else
echo "fail ping"
fi
done
echo "fin script"