unixforum.org
Форум для пользователей UNIX-подобных систем
Пауза перед выполнением команды в скрипте (Как добавить паузу между командами в скрипте?)
Модератор: Bizdelnick
Пауза перед выполнением команды в скрипте
Сообщение Netman » 06.03.2007 20:37
Здравствуйте! Появилось необходимость в следующем — в скрипт нужно добавить паузу перед выполнением очередной команды в скрипте. Какэто сделать?
Ситуация у меня конкретная: нужно выдержать некоторую паузу (секунду в 5-10) после установление OpenVPN—соеденения перед прописыванием маршрутов (маршруты прописываются самостоятельно, «в ручную»). Сейчас у меня 2 скрипта первый поднимает интерфейс DVB-карты и устанавливает OpenVPN-соединение, а второй прописывает необходимые маршруты — хотелось бы их объеденить в один скрипт, примерно такого вида:
Re: Пауза перед выполнением команды в скрипте
Сообщение broom » 06.03.2007 20:42
Re: Пауза перед выполнением команды в скрипте
Сообщение Netman » 06.03.2007 22:00
2 мин для чтения Использование команды Sleep в скриптах Bash в Linux
Главное меню » Операционная система Linux » Использование команды Sleep в скриптах Bash в Linux
Команда sleep в Linux – одна из самых простых команд. Как видно из названия, его единственная функция – спать. Другими словами, он вводит задержку на указанное время.
Таким образом, если вы используете команду sleep с x, то следующая команда может быть запущена только через x секунд.
Команда Sleep имеет простой синтаксис:
Здесь суффикс может быть:
Давайте посмотрим несколько примеров команды sleep.
Примеры команды Sleep в Bash
Хотя вы можете использовать его непосредственно в оболочке, команда sleep обычно используется для введения задержки в выполнение сценария bash. Мы собираемся показать использование команды sleep через примеры сценариев bash.
Команда sleep без суффикса считается в секундах
Предположим, вы хотите приостановить ваш bash-скрипт на 5 секунд, вы можете использовать режим sleep следующим образом:
В примере скрипта bash это может выглядеть так:
Если вы запустите его с помощью команды time, вы увидите, что скрипт bash на самом деле работал (немного) более 5 секунд.
Команда Sleep с суффиксом m, h или d
Вы можете указать время sleep в минутах следующим образом:
Это приостановит скрипт/оболочку на одну минуту. Если вы хотите отложить сценарий на несколько часов, вы можете сделать это с помощью опции h:
Даже если вы хотите приостановить скрипт на несколько дней, вы можете сделать это с помощью суффикса d:
Это может помочь, если вы хотите работать в разные дни или дни недели.
Команда sleep с комбинацией секунд, минут, часов и дня
Вы не обязаны использовать только один суффикс за раз. Вы можете использовать более одного суффикса, и продолжительность sleep является суммой всех суффиксов.
Например, если вы используете следующую команду:
Это заставит скрипт ждать 1 час 10 минут и 5 секунд. Обратите внимание, что суффикс s здесь по-прежнему необязателен.
Бонусный совет: спать меньше секунды
Вы могли заметить, что наименьшая единица времени в команде sleep – секунда. Но что если ваш bash-скрипт будет спать в течение миллисекунд?
Хорошо, что вы можете использовать с плавающей точкой (десятичные точки) с командой sleep.
Поэтому, если вы хотите ввести паузу в 5 миллисекунд, используйте ее следующим образом:
Вы также можете использовать десятичные точки с другими суффиксами.
Будет введена задержка в 1 час 37 минут и 30 секунд.
Мы надеемся, что вы не спали, читая эти примеры команды sleep -).
Если у вас есть вопросы или предложения, пожалуйста, не стесняйтесь спрашивать.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
How do I pause my shell script for a second before continuing?
I have only found how to wait for user input. However, I only want to pause so that my while true doesn’t crash my computer.
I tried pause(1) , but it says -bash: syntax error near unexpected token ‘1’ . How can it be done?
10 Answers 10
Use the sleep command.
One can also employ decimals when specifying a time unit; e.g. sleep 1.5s
In Python (question was originally tagged Python) you need to import the time module
For shell script is is just
Which executes the sleep command. eg. /bin/sleep
I realize that I’m a bit late with this, but you can also call sleep and pass the disired time in. For example, If I wanted to wait for 3 seconds I can do:
4 seconds would look like this:
On Mac OSX, sleep does not take minutes/etc, only seconds. So for two minutes,
Run multiple sleeps and commands
This will wait for 5 seconds before executing the first script, then will sleep again for 3 seconds before it changes directory again.
Within the script you can add the following in between the actions you would like the pause. This will pause the routine for 5 seconds.
Экспериментальный блог
Когда-то создал ради пробы. Потом решил так и оставить.
Официальная возможность получить лицензионный софт бесплатно. Это не реклама! |
среда, 4 мая 2016 г.
Пауза в bash-скриптах
К моему удивлению, штатной «паузы», подобной команде pause в языке пакетных файлов DOS в bash не обнаружилось. Но это было бы не труЪ, если бы ее нельзя было придумать.
Два основных решения:
1. Не совсем пауза: будет ждать именно нажатия ENTER
read -p «Нажмите ВВОД для продолжения»
2. Ближе к древнему оригиналу:
read -n 1 -p «Нажмите любую клавишу для продолжения. «
3. Комбинированное решение:
read -n 1 -t 5 -p «Нажмите любую клавишу или подождите 5 секунд для продолжения. «
1 комментарий:
Этот комментарий был удален администратором блога.
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.
Bash add pause prompt in a shell script ( bash pause command )
M ost of you may be aware of old good DOS/2000/XP pause command. It is used to display the prompt while suspending the processing of a batch script. It is used within a computer batch file and allows the computer to pause the currently running batch file until the user presses any key. Let us see how to pause our bash based shell script for a given number of times in seconds/minutes/hours before continuing to next operation/command running on a Linux or Unix-like systems.
bash pause command under Linux / UNIX / macOS
There is no pause command under Linux/UNIX bash shell. You can easily use the read command with the -p option to display pause along with a message.
Bash add pause prompt in a shell script with bash pause command
read -p «Press [Enter] key to start backup. » read -p «Press any key to resume . » ## Bash add pause prompt for 5 seconds ## read -t 5 -p «I am going to wait for 5 seconds only . «
The above will suspends processing of a shell script and displays a message prompting the user to press [Enter] (or any) key to continue. The last example will wait for 5 seconds before next command execute. We can pass the -t option to the read command to set time out value. By passing the -s we can ask the read command not to echo input coming from a terminal/keyboard as follows:
function pause() < read -s -n 1 -p "Press any key to continue . . ." echo "" >## Pause it ## pasue ## rest of script below
bash shell pause function
You can create a function as follows:
#!/bin/bash # init function pause() < read -p "$*" ># . # call it pause ‘Press [Enter] key to continue. ‘ # rest of the script # .
Getting help about the read command
Linux sleep command to pause a bash script
We can also use the sleep command to pause the execution of the next command or task for a given number of seconds. The syntax is as follows:
sleep NUM
sleep NUM[suffix]
By default it will pause for NUMBER seconds but we can add [suffix] as follows:
- s for seconds (the default)
- m for minutes
- h for hours
- d for days
Unlike most implementations of sleep on Unix-like system that require NUMBER be an integer, GNU/pause command NUMBER may be an arbitrary floating point number. Given two or more arguments, pause for the amount of time specified by the sum of their values.
How to use the sleep command
To sleep for 3 seconds, enter:
sleep 3
One can sleep for 0.8 seconds:
sleep 0.8
In this final example, sleep for 1 minute and 42 seconds:
sleep 1m 42s
Bash add pause prompt using the sleep command:
read -t 10 «Sleeping with 10 seconds time out . » OR echo «Sleeping with 10 seconds time out . » && sleep 10
Please note that portable POSIX shell scripts must give sleep a single non-negative integer argument without a suffix. In other words the following is only valid:
sleep 10
Conclusion
Original DOS/XP pause command is an internal command. Use the above technique if you are migrating from DOS/Windows batch file scripting. Both the read command/sleep command used to pause the execution of the next action in script for a given amount of time. See GNU/sleep command man page here or by typing the following man command:
man sleep