Попытка добавить 1 день к метке времени в скрипте bash, но это только добавление 19 часов - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть скрипт bash, в котором я извлекаю дату из последней строки текстового файла, добавляю 1 день ко времени и затем записываю эту дату обратно в файл.Идея состоит в том, чтобы добавить 24 часа каждый раз.Мой код выглядит следующим образом:

start_date=$(date -d "$(tail -n 1 run_dates.txt) +1 day" '+%F %T')
echo "$start_date" >> run_dates.txt

Выходной файл (run_dates.txt) выглядит так:

2018-09-18 16:42:57
2018-09-19 11:42:57
2018-09-20 06:42:57
2018-09-21 01:42:57
2018-09-21 20:42:57

По какой-то причине он добавляет только 19 часов каждый раз, а неполный деньЕсть идеи, что это такое?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Для добавления / вычитания интервала к команде даты не используйте «+».Если вы опустите +, это добавляет, для вычитания вы можете использовать ключевое слово «назад» вместе с частью даты.Вот несколько примеров

> date -d "2018-09-21 20:42:57 1 day 2 hours" "+%F %T"
2018-09-22 22:42:57
> date -d "2018-09-21 20:42:57 1 day ago 2 hours ago" "+%F %T"
2018-09-20 18:42:57
> date -d "2018-09-21 20:42:57 1 day 2 hours 12 minutes" "+%F %T"
2018-09-22 22:54:57
> date -d "2018-09-21 20:42:57 1 day 2 hours ago 12 minutes" "+%F %T"
2018-09-22 18:54:57
>
0 голосов
/ 19 сентября 2018
Парсер даты в свободной форме

date, похоже, очень запутался с + something в конце даты-времени.Все ужасные подробности здесь: https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html

Я получаю похожие результаты:

$ tail -n 1 run_dates.txt
2018-09-21 20:42:57
$ date -d "$(tail -n 1 run_dates.txt) +1 day" '+%F %T'
2018-09-22 15:42:57

, но если вы спросите «завтра» вместо «+1 день»:

$ date -d "$(tail -n 1 run_dates.txt) tomorrow" '+%F %T'
2018-09-22 20:42:57
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...