Надайте 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 до наступної ітерації. Це корисно в інтерактивному сценарії оболонки.