Проверка связи цикла Bash прошла успешно

Я думаю, что это нужно заменить на предложение 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"
18
задан edumike 25 May 2011 в 04:35
поделиться