Дайте 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цикл, использующий только рекурсивные вызовы функций.
(edit) Для того, чтобы помнить о ресурсах вашей машины, я добавил && waitтак, что при каждом запуске процесса циклы будут «ждать», пока этот процесс не завершится со статусом выхода 0 до следующей итерации. Это полезно в интерактивном скрипте оболочки.