$? является статусом выхода предыдущей выполненной команды. Никто не может гарантировать, что $? всегда возвращать 0.
Ваш код выше говорит, что «при возникновении некоторой ошибки повторите». Другими словами, $? -ne 0 защитит / обеспечит остановку вашего цикла при успешном выполнении какой-либо команды.
Я не знаю, в чем именно твое дело. Но я думаю, у вас есть несколько IP-адресов, многие из которых неверны. Сам цикл проверит эти IP-адреса и завершит работу, когда IP-адрес правильный.
Самый большой вопрос - сможет ли ваш код когда-либо войти в цикл. В этом случае использование while-do само по себе некорректно. Попробуйте вместо этого сделать do-while (я не знаю, доступно ли это в вашей оболочке или нет). Используя do-while, вы будете уверены, что ваш код будет введен в цикл как минимум 1 раз.