powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / проблема в shell вычитания от даты :(
2 сообщений из 2, страница 1 из 1
проблема в shell вычитания от даты :(
    #33865882
Partos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Есть такая проблема:

ОС: Solaris 5.9 на которой по-другому работает функция Date, не совсем так как на фре и на которой проблемно получить количество секунд с начала эпохи.

Задача: необходимо в цикле, начиная с текущей даты, уменьшать дату с шагом 1 до значения = (текущая дата -10 дней) и получать промежуточные значение даты в переменную в формате yyyymmdd. Всё это нужно в shell-скрипте, в котором возможны perl-овые вставки.

Вот на чём заступорился я:


#!/bin/sh

i=10
d=`/usr/bin/perl -e 'print time();'`
while [ $i -gt 0 ]
do
i=`expr $i - 1`
# echo $d
d=`expr $d - 86400`
cmd="/usr/bin/perl -e 'print localtime($d);'"
lt=$cmd
echo $lt
done

Происходит следующее: получаем количество секунд с начала эпохи, вычитаем из него количество секунд сооттветствующее суткам и пытаемся это новое количество секунд снова преобразовать к дате. Пока заставить работать не удалось.

Если кто сможет помочь - большое спасибо!!
...
Рейтинг: 0 / 0
проблема в shell вычитания от даты :(
    #33865983
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PartosЗдравствуйте.

Есть такая проблема:

ОС: Solaris 5.9 на которой по-другому работает функция Date, не совсем так как на фре и на которой проблемно получить количество секунд с начала эпохи.

Задача: необходимо в цикле, начиная с текущей даты, уменьшать дату с шагом 1 до значения = (текущая дата -10 дней) и получать промежуточные значение даты в переменную в формате yyyymmdd. Всё это нужно в shell-скрипте, в котором возможны perl-овые вставки.

Вот на чём заступорился я:


#!/bin/sh

i=10
d=`/usr/bin/perl -e 'print time();'`
while [ $i -gt 0 ]
do
i=`expr $i - 1`
# echo $d
d=`expr $d - 86400`
cmd="/usr/bin/perl -e 'print localtime($d);'"
lt=$cmd
echo $lt
done

Происходит следующее: получаем количество секунд с начала эпохи, вычитаем из него количество секунд сооттветствующее суткам и пытаемся это новое количество секунд снова преобразовать к дате. Пока заставить работать не удалось.

Если кто сможет помочь - большое спасибо!!

эээ, а на писать все на перле если уж таки пользуеш его религия не позволяет ?
Код: plaintext
1.
2.
perl -e 'my $time=time;foreach my$i(0..9){printf"%4.4d%2.2d%2.2d\n",1900+(localtime($time-$i*86400))[5],(localtime($time-$i*86400))[4,3]}
'
- это во первых, а во вторых - тебе для полного счастья,в решаемой задаче, не надо количество секунд с начала эпохи, достаточно просто указать какую дату ты хочеш... в линуксе это `date -d '-1day'`, во фре несколько по другому кажется, а вот за соляру вообще не скажу...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / проблема в shell вычитания от даты :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]