Просто конвертируйте время в метки времени и делайте с ними математические вычисления.
например.поверните человека в эпоху (например, «28 апреля 07:50:01» к 1524916201), а затем вычтите их, добавьте их или что-то еще.
В этом примере у меня есть функция, которая будет читаться из «человека», еслиВы будете к отметке времени и обратно.Я нашел это полезным, когда написал сценарий, в котором говорилось, когда начинаются кроны и когда они действительно заканчиваются.
Пример: преобразование из функции человека в эпоху
#!/bin/bash
# -- Converts from human to epoch or epoch to human,
# specifically this format: "Apr 28 07:50:01" human.
# typeset now=$(date +"%s")
# typeset now_human_date=$(convert_cron_time "human" "$now")
function convert_cron_time() {
case "${1,,}" in
epoch)
# human to epoch (eg. "Apr 28 07:50:01" to 1524916201)
echo $(date -d "${2}" +"%s")
;;
human)
# epoch to human (eg. 1524916201 to "Apr 28 07:50:01")
echo $(date -d "@${2}" +"%b %d %H:%M:%S")
;;
esac
}
now=$(date +"%s")
time_range=604800 #one week in seconds
start=$now
finish=$((($now+$time_range)))
start_human=$(convert_cron_time "human" "$start")
finish_human=$(convert_cron_time "human" "$finish")
start_epoch=$(convert_cron_time "epoch" "$start_human")
finish_epoch=$(convert_cron_time "epoch" "$finish_human")
echo "$start_human / $start_epoch"
echo "$finish_human / $finish_epoch"
another=$(convert_cron_time "epoch" "2018-06-01 07:32:20")
another_human=$(convert_cron_time "human" "$another")
echo "another ex: $another / $another_human"
Вывод:
Jun 01 08:47:34 / 1527857254
Jun 08 08:47:34 / 1528462054
another ex: 1527852740 / Jun 01 07:32:20
Следовательно, в цикле for вы можете добавить все поля вверх или сделатьСравнения, как вы читаете файл.В вашем случае вы должны вычесть временные метки, взять разницу в секундах и что-то с ними сделать (например, конвертировать в минуты / часы и т. Д.)