Надайте while
циклу булеві умови, такі як:
#!/bin/bash
while true; do
do_something && wait
done
Це буде виконуватися знову і знову, поки bash не отримає сигнал про припинення процесу. Зазвичай у формі ctrl+c
.
Ви також можете скористатися watch
командою для повторного запуску сценарію. Наприклад, простий годинник у вашому терміналі bash watch
може виглядати так:
$ watch -t -n1 date +%T
-t
Опція вказує , watch
щоб не відображати назву процесу він працює. Це дає чіткий вихід лише тієї команди, яка повторюється. -n1
Опція каже дивитися повторювати кожні n
секунди. У цьому випадку -n1
будуть проміжки 1
секунди. Потім date +%T
команда показує час на момент виконання команди. Виконання цієї команди дасть вам активний годинник у вашому терміналі.
І тоді ще одним методом, якого немає в жодній з інших відповідей, буде нескінченний виклик функції.
do_something() { do_something }; do_something && wait
Це по суті те саме, що булевий while
цикл лише за допомогою рекурсивних викликів функцій.
(редагувати) Для того, щоб пам’ятати про ресурси вашої машини, я додав && wait
так, що кожного разу, коли процес запускається, петлі будуть «чекати», поки цей процес закінчиться статусом виходу 0 до наступної ітерації. Це корисно в інтерактивному сценарії оболонки.