11

Как сделать паузу в shell-скрипте на одну секунду перед продолжением?

22

Я нашел информацию только о том, как ожидать ввода пользователя. Однако я хочу приостановить выполнение программы, чтобы мой цикл while true не перегружал компьютер.

Я пробовал использовать команду pause(1), но получаю ошибку: -bash: syntax error near unexpected token '1'. Как это можно сделать?

5 ответ(ов)

20

Вы можете использовать команду sleep для приостановки выполнения программы на заданный промежуток времени. Примеры использования:

sleep .5   # Ожидание 0.5 секунды.
sleep 5    # Ожидание 5 секунд.
sleep 5s   # Ожидание 5 секунд.
sleep 5m   # Ожидание 5 минут.
sleep 5h   # Ожидание 5 часов.
sleep 5d   # Ожидание 5 дней.

Также можно использовать дробные значения при указании временной единицы; например, sleep 1.5s для ожидания 1.5 секунды.

0

В Python, чтобы использовать функцию sleep, вам необходимо импортировать модуль time:

import time
time.sleep(1)

или можно использовать более компактный вариант:

from time import sleep
sleep(1)

В Shell-скрипте всё гораздо проще, достаточно просто написать:

sleep 1

Это выполнит команду sleep, которая обычно расположена по пути /bin/sleep.

0

Вы можете использовать последовательность команд с sleep, как в вашем примере, чтобы выполнить задержки между командами. В приведённом вами коде происходит следующее:

sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..

Этот скрипт сначала ждёт 5 секунд, затем переходит в директорию /var/www/html, выполняет команду git pull, после чего снова ждет 3 секунды, и возвращается в предыдущую директорию.

Если вы хотите выполнить несколько команд с интервалами между ними, используйте конструкцию &&, которая запускает следующую команду только в случае успешного выполнения предыдущей. Таким образом, ваш код работает корректно, обеспечивая необходимую последовательность операций с паузами между ними.

0

В macOS команда sleep используется для приостановки выполнения на определенное количество секунд. Однако, в отличие от других версий Unix, она не поддерживает ввод времени в минутах и т.д., принимая только секунды. Поэтому, чтобы приостановить выполнение на две минуты, выполните следующую команду:

sleep 120
0

Я понимаю, что я немного опоздал с ответом, но вы также можете воспользоваться командой sleep и передать нужное время. Например, если я хочу подождать 3 секунды, я могу сделать так:

/bin/sleep 3

А если нужно подождать 4 секунды, это будет выглядеть так:

/bin/sleep 4
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь