#!/bin/bash set -euo pipefail default_sleep=10 source ${HOME}/bin/script_framework.sh time=${1:-} [ -z "${time}" ] && fail "No time specified" tdiff=$(($(date -d "$1" +%s) - $(date +%s))) [ $tdiff -gt 0 ] || tdiff=$((tdiff + 86400)) ttime=$(date -d "now + ${tdiff} seconds" +%s) step "Sleeping ${tdiff}s until $(date -d "now + ${tdiff} seconds" "+%Y-%m-%d %H:%M:%S")..." while [ $(date +%s) -lt $ttime ]; do tremain=$(( ttime - $(date +%s) )) [ $tremain -gt $default_sleep ] && sleep $default_sleep || sleep $tremain done