Use strftime
no módulo zsh/datetime
para converter um horário do calendário para Unix epoch (com -r
) ou vice-versa. Para geração de números aleatórios, você tem $RANDOM
como em ksh
, mas isso é apenas um inteiro de 15 bits ou a função rand48()
math (na função zsh/mathfunc
).
#! /bin/zsh -
start=11.11.2017
end=12.12.2017
TZ=UTC0 # timezone doesn't matter here. We use UTC0 to make sure there's
# DST/change
zmodload zsh/datetime
zmodload zsh/mathfunc
strftime -rs start_t %d.%m.%Y $start
strftime -rs end_t %d.%m.%Y $end
for ((t = start_t; t <= end_t; t += 24*60*60)) {
strftime -s weekday %u $t
if ((weekday < 6)) { # Monday to Friday
strftime -s s '%d.%m.%Y %H:%M' $((t + 8 * 60*60))
strftime -s e '%H:%M' $((t + 16*60*60 - 15*60 + int(rand48() * 30*60)))
print $s - $e
}
}