Если вы хотите, чтобы цикл в то время, чтобы остановить после некоторого условия, и ваша команда foo
возвращает ненулевое значение, если это условие выполнено, то вы можете получить петлю сломать так:
while foo; do echo 'sleeping...'; sleep 5; done;
Например, если команда foo
удаляет файлы партиями и возвращает 1, когда ничего не остается удалить.
Это хорошо работает, если у вас есть собственный скрипт, который должен выполнять команду много раз до некоторого состояния. Вы пишете сценарий для выхода с 1
, когда условие выполнено и выйдите с 0
, когда он должен быть запущен снова.
Например, у вас есть питон скрипт batch_update.py
который обновляет 100 строк в базе данных и возвращает 0
если не больше, чтобы обновить и 1
, если больше нет. Следующая команда позволит вам обновлять строки 100 за один раз спящим в течение 5 секунд между обновлениями:
while batch_update.py; do echo 'sleeping...'; sleep 5; done;
заменить новые строки точкой с запятой. То же самое работает для петель. – Tom
@ Тома: это не всегда работает. после этого вы должны иметь первую команду, а не точку с запятой –