2017-01-16 4 views
-1

Я пишу скрипт bash: У меня есть параметр, равный 02:00, например. PARAM = 02: 00.Разбор HH: MM в оболочке bash?

У меня есть дата в формате YYYYYMMDDHHMMSS, например SAMPLE_DATE = 20160101000000.

Как добавить этот ПАРА в этот SAMPLE_DATE?

например: SAMPLE_DATE + PARAM = (20160101000000 + 02: 00) = 20160101020000.

Я расколоть PARAM получил минут, а затем с помощью даты апи я добавил эти минуты на дату, но Может ли быть другой лучший вариант для этого?

+0

Пожалуйста, сообщите нам (что вы пытались) (http://whathaveyoutried.com/). Большинство из нас с удовольствием помогут вам улучшить свое ремесло, но они менее счастливы, чем неоплачиваемый персонал по программированию. Покажите нам свою работу в [MCVE] (http://stackoverflow.com/help/mcve), результат, который вы ожидали, и полученные результаты, и мы поможем вам разобраться. – ghoti

+0

Я использую разрез, как один из вариантов вывести минуты из этого ПАРАМА 02:00 и сформировать из него дату (20160101020000), добавив эти минуты на сегодняшний день (20160101000000). Но мне не понравился этот подход, я ищу еще один вариант добавить это 02:00 на сегодняшний день (20160101000000). Благодаря! –

+0

Er, нет, вы должны обновить свой вопрос. Комментарии предлагают * страшное * форматирование, и ваш вопрос должен быть самодостаточным. Попробуйте создать [MCVE] (http://stackoverflow.com/help/mcve), чтобы показать нам вашу работу до сих пор. – ghoti

ответ

1

Ваш формат ввода не распознается GNU date, поэтому вам необходимо его изменить, усекая дату использования только части YYYMMDD, а затем добавив часть HH: MM. Затем вы можете использовать параметры форматирования вывода, чтобы получить то, что вы хотите:

$ D=20160101000000 
$ PARAM=02:00 
$ date -d "${D:0:8} $PARAM" +"%Y%m%d%H%M%S" 
20160101020000 
+0

Его формат ввода вполне может быть распознан 'date'. Отметьте [опцию '-f'] (https://www.freebsd.org/cgi/man.cgi?query=date) для расширенной обработки входных форматов. (И обратите внимание, что этот вопрос был помечен [tag: unix], а не [tag: linux].) – ghoti

+0

Спасибо, ребята! Это не поможет, позвольте мне попробовать еще! –

+1

@ghoti '-f' - расширение BSD, которое не поддерживается POSIX или GNU' date'. – chepner