Мне нужна серия команд или одна команда, которая спит, пока не произойдет следующее вхождение определенного времени, например «4:00».
Как бы я это сделал?
Команда at
или cronjob не вариант, потому что я не должен оставлять сценарий, в котором я сейчас нахожусь.
Конкретный случай, о котором я говорю, - это скрипт, работающий на экране. Очень важно, чтобы я не останавливал выполнение сценария самим сценарием, поскольку в нем хранится много важных переменных, которые необходимы в какой-то момент сценария. Сценарий не всегда должен выполняться в обычном режиме. Это просто нужно выполнить в определенное время.
Было бы очень полезно, если бы сценарию пришлось создавать какие-либо файлы или любые другие задачи, такие как cronjobs или другие экраны. Это просто вопрос дизайна.
У меня просто была отличная идея:
difference=$(($(date -d "4:00" +%s) - $(date +%s)))
if [ $difference -lt 0 ]
then
sleep $((86400 + difference))
else
sleep $difference
fi
У вас есть идеи получше?
Дополнительная информация будет добавлена по запросу!
date -d
на date -j
и заменить 4:00
на 0400
.