Necesito una serie de comandos o un solo comando que duerma hasta que ocurra la próxima aparición de una hora específica como "4:00".
¿Como podría hacerlo?
El at
comando o un cronjob no es una opción porque no debo dejar el script en el que estoy actualmente.
El caso específico del que estoy hablando es un script que se ejecuta en la pantalla. Es muy importante que no detenga la ejecución del script por el script en sí porque hay muchas variables importantes que se necesitan en algún punto del script. No siempre se supone que el script se ejecute de manera regular. Solo necesita ejecutarse en un momento específico.
Sería muy benéfico si el script tuviera que crear algún archivo o cualquier otra tarea como cronjobs u otras pantallas. Esto es simplemente una cuestión de diseño.
Acabo de tener una idea increíble:
difference=$(($(date -d "4:00" +%s) - $(date +%s)))
if [ $difference -lt 0 ]
then
sleep $((86400 + difference))
else
sleep $difference
fi
¿Tienes alguna idea mejor?
¡Se agregará más información si se solicita!
date -d
con date -j
y reemplazar 4:00
con 0400
.