Получить вчерашнюю дату в Unix - скрипт KSH

Приведенная ниже команда используется для получения даты прошлых дней в Unix Ksh на HP UX.

DATE_STAMP=`TZ=CST+24 date +%m/%d/%Y` 

Может ли кто-нибудь сообщить мне, что делает «дата CST + 24» ​​в приведенной выше команде?


person UnixQue    schedule 30.06.2011    source источник
comment
Если это та же самая команда date, которая является частью GNU coreutils, вы можете получить вчерашнюю дату, используя date --date=yesterday.   -  person Noufal Ibrahim    schedule 30.06.2011
comment
@Noufal Ibrahim Я не вижу такой опции в HPUX.   -  person Praveen Lobo    schedule 30.06.2011
comment
Это не часть GNU coreutils, поэтому я не могу использовать эту команду   -  person UnixQue    schedule 30.06.2011
comment
Ну... стоило попробовать. На машинах HP-UX, с которыми я работал, GNU coreutils были установлены где-то нестандартно. Может и у твоего так?   -  person Noufal Ibrahim    schedule 30.06.2011
comment
я попытался запустить команду, но получил ошибку --date=yesterday: not found после выполнения, поэтому похоже, что она не установлена ​​на моей машине   -  person UnixQue    schedule 30.06.2011
comment
Обратите внимание, что эта команда вернет правильную дату только в 99,9772 % случаев. Другими словами, он будет выходить из строя два раза в год в течение одного часа из-за изменения летнего времени.   -  person jlliagre    schedule 07.08.2013


Ответы (3)


Эта команда устанавливает часовой пояс на CST+24 и возвращает дату в этом часовом поясе.

если вы ищете команду, чтобы узнать вчерашнюю дату, вам лучше использовать трюк TZ esp. если вы находитесь в часовом поясе, который соблюдает летнее время.

вместо этого используйте perl one liner.

#this takes local time and substracts a day(24*60*60 seconds) and formats the time.
echo `perl -e 'use POSIX; print strftime "%m/%d/%Y%", localtime time-86400;'` 

Просто предположение по вашей команде - поскольку это вчера в часовом поясе CST + 24, команда возвращает вчерашнюю дату, и если вы используете CST-24, она возвращает завтрашнюю дату, поскольку дата переводится в дату завтрашнего дня в часовом поясе CST-24.

person Praveen Lobo    schedule 30.06.2011

VARIABLE=VALUE COMMAND означает, что вы устанавливаете переменную среды VARIABLE в VALUE, но не постоянно, а только для выполняемой команды COMMAND.

В вашем примере это означает: выполните команду date с переменной среды TZ, установленной на CST+24 (что соответствует центральному стандартному времени плюс 24 часа).

person bmk    schedule 30.06.2011

Посетите эту страницу http://www.kodkast.com/blogs/unix-shell-scripting/how-to-get-yesterdays-date, где вы можете узнать вчерашнюю дату, а также любую другую предыдущую дату в сценариях оболочки Unix.

person Ravi Agarwal    schedule 21.10.2013
comment
Ваш ответ едва ли является ссылкой на другой сайт, который не подходит для SO. Более того, страница, на которую вы ссылаетесь, не относится к вопросу. - person jlliagre; 21.10.2013