#!/bin/zsh # crontab usage: #* * * * * minutemaid 9 cd repo; git pull # runs every nine minutes local offset=0 opt= while getopts 'o:h' opt; do case $opt in o) offset="$OPTARG";; ?) local fd=0 [ $opt = h ] && fd=0 || fd=2 echo -E "usage: $0 [-o offset] {interval} [{command} [{args...}]]" >&$fd [ $opt = h ] && return 0 || return 1;; esac done shift $((OPTIND-1)) local interval="${1:?no interval specified}" shift local sec="$(date +%s)" let min=sec/60+offset let mod=min%interval if [ $# -gt 0 ]; then local cmd="${1}" shift [ $mod -eq 0 ] && "$cmd" "$@" else [ $mod -eq 0 ] && return 0 || return 1 fi