it-swarm.com.ru

Как мне приостановить сценарий Shell на секунду, прежде чем продолжить?

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

Я попытался pause(1), но он говорит -bash: syntax error near unexpected token '1'. Как это можно сделать?

567
user3268208

Используйте команду sleep.

Пример:

sleep .5 # Waits 0.5 second.
sleep 5  # Waits 5 seconds.
sleep 5s # Waits 5 seconds.
sleep 5m # Waits 5 minutes.
sleep 5h # Waits 5 hours.
sleep 5d # Waits 5 days.

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

1016
RydallCooper

В Python (вопрос был изначально помечен как Python) вам необходимо импортировать модуль времени

import time
time.sleep(1)

или же

from time import sleep
sleep(1)

Для Shell скрипт это просто

sleep 1

Который выполняет команду sleep. например. /bin/sleep

63
John La Rooy

И что насчет:

read -p "Press enter to continue"
55
Vonton

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

/bin/sleep 3

4 секунды будут выглядеть так:

/bin/sleep 4
37
pcmaster574

На Mac OSX, сон не занимает минут/и т.д., Только секунды. Итак, на две минуты,

sleep 120
29
AnneTheAgile

В сценарии вы можете добавить следующее между действиями, которые вы хотите сделать паузу. Это приостановит процедуру на 5 секунд.

read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
15
Jose H. Rosa

Выполнить несколько снов и команд

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

Это будет ждать в течение 5 секунд перед выполнением первого сценария, затем снова будет находиться в спящем режиме в течение 3 секунд, прежде чем он снова изменит каталог.

13
Robot Boy

read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s

Чтобы продолжить, когда вы нажимаете любую кнопку

4
Andrey

Вы можете заставить его ждать, используя $ RANDOM, генератор случайных чисел по умолчанию. Ниже я использую 240 секунд. Надеюсь, это поможет @

> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS
1