Я пишу над сценарієм перезавантаження різних серверів. Після перезавантаження я хочу "зачекати", поки всі сервери повернуться в Інтернет. (Щоб все було просто, я визначив мене в Інтернеті = 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 виконується лише двічі, як один раз, коли не працює пінг, а один раз успішно пінг? Що потрібно змінити, щоб отримати більше точок у циклі while?
Я робив тест також з неіснуючим IP-адресою. Але воно застрягло
waiting for NonExistentServer...
і ніколи не припиняється, звичайно. Але те саме питання, чому не ........
додають?