Команда "sleep" в Bash используется для остановки выполнения сценария на определенный период. Эта команда полезна для выполнения любого запланированного задания или для ожидания определенного периода времени перед выполнением конкретного сценария. Команда останавливает выполнение сценария на некоторое определенное время. Использование этой команды в Bash для различных целей показано в данном руководстве.
Синтаксис
1 | sleep число[суффикс] ... |
Значение числа может быть целым положительным числом или числом с плавающей точкой. По умолчанию суффикс имеет значение "s", обозначающее секунды. Другими значениями суффикса могут быть "m" для минут, "h" для часов и "d" для дней.
Различные варианты использования команды "Sleep"
Пример 1: Использование команды "Sleep" с целым значением
Создайте Bash-файл со следующим сценарием, который печатает число от 1 до 5 с интервалом в 2 секунды, используя команду "sleep". Бесконечный цикл for используется для вывода значения $counter через 2 секунды до тех пор, пока значение $counter не станет равным 5. Команда "sleep" используется со значением 2 для установки интервала в 2 секунды. Суффикс здесь не используется.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/bash #Установить значение счетчика counter=1 #Бесконечный цикл for((;;)) do #Проверка значения счетчика if [ $counter -gt 5 ]; then break fi #Вывести значение счетчика echo $counter #ожидание 2 секунды sleep 2 #Увеличение значения счетчика ((counter++)) done |
Пример 2: Использование команды "Sleep" с числом с плавающей точкой
Создайте Bash-файл со следующим сценарием, который выводит текст "Digital Clock" и текущее системное время, обновляемое каждую секунду с помощью команды "sleep". Для обновления и печати текущего времени каждую секунду используется бесконечный цикл for. Буква "s" используется в качестве суффикса команды "sleep". Каждый символ текста печатается с интервалом в 0,5 секунды. Для завершения работы скрипта пользователю необходимо нажать клавиши "Ctrl+C".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/bin/bash #Отображение строки текста с помощью команды 'sleep' echo -n 'D'; sleep 0.5s echo -n 'i'; sleep 0.5s echo -n 'g'; sleep 0.5s echo -n 'i'; sleep 0.5s echo -n 't'; sleep 0.5s echo -n 'a'; sleep 0.5s echo -n 'l'; sleep 0.5s echo -n ' '; sleep 0.5s echo -n 'C'; sleep 0.5s echo -n 'l'; sleep 0.5s echo -n 'o'; sleep 0.5s echo -n 'c'; sleep 0.5s echo -n 'k'; echo echo "Clock will display soon." echo "Press Ctrl+C to close the program." sleep 3s; clear while true do #Отображение времени date +"%H:%M:%S" #Подождать 1 секунду sleep 1s #Очистка экрана каждую секунду clear done |
После выполнения скрипта появляется следующий вывод. Скрипт ожидает 5 секунд, после чего выводит следующее сообщение:
После ожидания в течение 5 секунд появляется следующий вывод, в котором каждую секунду обновляется значение времени, отображаемое в виде цифровых часов. Нажмите Ctrl+C, чтобы завершить работу скрипта:
Пример 3: Использование команды "Sleep" для создания оповещения
Перед тестированием сценария этого примера необходимо установить медиаплеер. Выполните следующие команды для обновления системы и установки в нее проигрывателя vlc:
1 2 | sudo apt update sudo apt install vlc |
Создайте Bash-файл со следующим сценарием, который принимает время срабатывания будильника в часах, минутах и секундах. Проигрыватель vlc автоматически открывает медиафайл после прохождения принятых в качестве входных данных часов, минут и секунд. Выберите существующий медиафайл, который будет воспроизводиться в медиаплеере. В данном скрипте файл "alarm.mp3" проигрывается командой "nvlc" через интервал времени, переданный командой "sleep".
1 2 3 4 5 6 7 | #!/bin/bash echo "Playing alarm..." #Установка времени будильника echo -n "Введите время будильника (_ч _м _с): " read alarm_time #Запустить VLC-плеер по достижении времени сигнала sleep $alarm_time && nvlc /mnt/c/temp/alarm.mp3 |
После выполнения скрипта появляется следующий вывод. Здесь интервал задан равным 10 секундам. Через 10 секунд открывается проигрыватель vlc с медиафайлом:
Когда медиаплеер начинает воспроизводить медиафайл, появляется следующий вывод. В выводе показано расположение файла, состояние медиаплеера, положение медиафайла и громкость звука:
Заключение
Команда "sleep" - это очень полезная команда Bash, которая используется для различных целей. В данном учебном пособии на нескольких примерах показаны некоторые варианты использования этой команды: отображение анимированного текста и цифровых часов, создание будильника и т.д. Метод использования этой команды в сценарии Bash будет понятен пользователям Bash после прочтения этого руководства.