2016-03-28 2 views
-1

У меня есть сценарий, который использует $(TZ=MSZ+24 date +"%d%m%Y"), чтобы получить вчерашнюю дату в BASH (система AIX). До сих пор он работал безупречно в течение 5 месяцев, до прошлой ночи, когда он не работал должным образом. Обычно он работает в 01:00 по времени сервера, но вчера вечером произошло что-то странное, и единственная причина, по которой он не сработал, - это из-за $(TZ=MSZ+24 date +"%d%m%Y").

Итак, мой вопрос в том, что если в субботу вечером часы пошли вперед 1 час, может ли это повлиять на $(TZ=MSZ+24 date +"%d%m%Y"), поэтому, когда он побежал в воскресенье, это принесло бы странный результат?

Спасибо

+0

В Европейском Союзе переход на летнее время фактически произошел в воскресенье. –

+2

«это не сработало правильно» и «что-то странное произошло» - это не очень описательно. Что случилось? Какой результат вы получили? Какой часовой пояс вы в любом случае? –

+0

Привет, он не работал должным образом, поскольку в нем не было возвращено ожидаемое значение. Я не знаю, что он действительно вернул, потому что я не установил -x в этом скрипте. Откуда я знаю, что это заявление не работает должным образом? Это потому, что в сценарии есть оператор if, основанный на вышеупомянутом выполнении некоторых вычислений. Он не дошел до этой части, потому что никаких расчетов не было сделано. – Georgian

ответ

0

Благодаря летнее время, 24 часов назад, может быть сегодня или позавчера. Если вы хотите изменить свой сценарий без использования GNU-даты, используйте следующий трюк:

Вы уверены, что вчера прошло 20 или 30 часов назад. Который из? Ну, последнее, что не сегодня.

echo "$(TZ=MSZ+30 date +"%d%m%Y") 
$(TZ=MSZ+20 date +"%d%m%Y")" | grep -v "$(date +"%d%m%Y")" | tail -1 

 Смежные вопросы

  • Нет связанных вопросов^_^