Я думаю, что это нужно заменить на предложение while, в данный момент он будет ждать, пока будут выполнены все 10000 ping, мне нужно, чтобы он вернулся, когда пинг прошел успешно. Программа "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"