Bash ждет успеха ping

Я пишу сценарий, перезагружая различные серверы. После перезагрузки я хочу «подождать», пока все серверы не вернутся в сеть. (Чтобы все было просто, я определил для меня онлайн = pingable)

Поэтому для каждого сервера я делаю

ServerXY_W=1 echo -n "waiting for ServerXY ..." while (($ServerXY_W == 1)) do if ping -c 1 -w 0.2 192.168.123.123 &> /dev/null then echo "ServerXY is back online!" ServerXY_W=0 else echo -n "." fi done 

То, что я ожидал бы (и как), было бы результатом, например,

 waiting for ServerXY ................. ServerXY is back online! 

где точки …. появлялись один за другим.

Но то, что на самом деле происходит, сначала есть только

 waiting for ServerXY ... 

какое-то время, и когда сервер вернется, я получу последнюю точку, а последняя строка вроде

 waiting for ServerXY .... ServerXY is back online! 

Почему цикл while выполняется дважды, как один раз, когда ping не работает, и один раз с последующим ping? Что мне нужно изменить, чтобы получить больше точек, добавленных в цикл while?

Я также проверил тест с отсутствующим IP-адресом. Но он застрял

 waiting for NonExistentServer... 

и никогда не прекращался, конечно. Но тот же вопрос, почему бы не добавить ........