Автор Тема: bash скрипт и сравняване на час  (Прочетена 1479 пъти)

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
Винаги ми е било трудно когато става дума за сравняване на часове.Моля за универсално решение.
Пример:

cat text.txt |grep date
25/07/2014 21:02:17

И сега искам, ако са минали 2мин от часа в този файл, да изпълни едни какво си.

В момента какво правя: режа между : , но проблема е при сравняването, че числото е 02.Евентуално режа 0 да остане само 2ката.Но ако е 20 или 10 става пак кофти и нещо не ме кефи.
Някой да препоръча нещо?
Активен

Some Things Just Are The Way They Are

laskov

  • Напреднали
  • *****
  • Публикации: 3168
    • Профил
Re: bash скрипт и сравняване на час
« Отговор #1 -: Jul 25, 2014, 22:24 »
ето как :)
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

jet

  • Напреднали
  • *****
  • Публикации: 3473
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: bash скрипт и сравняване на час
« Отговор #2 -: Jul 25, 2014, 22:30 »
Код:
last = cat /tmp/.lastrun
curr = date '+%s'

diff = $(($curr - $last))
if [ $diff -gt 3600 ]; then
    # ...
fi

echo "$curr" >/tmp/.lastrun


powered by Google
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
Re: bash скрипт и сравняване на час
« Отговор #3 -: Jul 29, 2014, 00:41 »
Код:
last = cat /tmp/.lastrun
curr = date '+%s'

diff = $(($curr - $last))
if [ $diff -gt 3600 ]; then
    # ...
fi

echo "$curr" >/tmp/.lastrun


powered by Google

Примера не е за моя случай.
Датата която извличам от файла, не може да и бъде променен/зададен синтаксиса.Винаги е във формат:

27/07/2014 22:53:45

и аз искам проверка, дали са минали 5мин след този час и ако са, да прави еди какво си.

@laskov
Търсил съм доста и преди, но не намерих такъв пример.
Пак казвам, проблем ми е когато часа е 22:05:45 (примерно), защото ако кътна 05 за да го сравня, if-a не може да изважда/събира числа от вида 05, трябва да е... единично число.
« Последна редакция: Jul 29, 2014, 00:46 от mrowcp »
Активен

Some Things Just Are The Way They Are

jet

  • Напреднали
  • *****
  • Публикации: 3473
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: bash скрипт и сравняване на час
« Отговор #4 -: Jul 29, 2014, 03:10 »
най-лесно се смята минало време като се извади от текущото - изминалото време (в UNIX формат, т.е. в секунди от началото на епохата). Получаваш разликата в секунди.
Това може да помогне:
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. bgdate=`cat /tmp/zzz/text.txt`
  4. HH=${bgdate:11:8}
  5. YYYY=${bgdate:6:4}
  6. MM=${bgdate:3:2}
  7. DD=${bgdate:0:2}
  8.  
  9. OLDDATE="$YYYY-$MM-$DD $HH"
  10. START=`date -d "$OLDDATE" +"%s"`
  11. NOW=`date +"%s"`
  12.  
  13. DIFF=$(($NOW-$START))
  14.  
  15. echo diff $DIFF
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 10786 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 6410 Последна публикация Jun 11, 2005, 19:12
от tuxi
Моля за малко помощ за BASH
Настройка на програми
bonbon 3 5030 Последна публикация Dec 04, 2005, 16:37
от bonbon
BASH
Общ форум
Dean79 3 5150 Последна публикация Jan 13, 2006, 00:24
от Dean79
Bash присвояване на стойност от файл
Общ форум
Pulear 6 5970 Последна публикация May 21, 2006, 17:20
от Pulear