Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: mrowcp в Jul 25, 2014, 21:56



Титла: bash скрипт и сравняване на час
Публикувано от: mrowcp в Jul 25, 2014, 21:56
Винаги ми е било трудно когато става дума за сравняване на часове.Моля за универсално решение.
Пример:

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

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

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


Титла: Re: bash скрипт и сравняване на час
Публикувано от: laskov в Jul 25, 2014, 22:24
ето как ($2) :)


Титла: Re: bash скрипт и сравняване на час
Публикувано от: jet в 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


Титла: Re: bash скрипт и сравняване на час
Публикувано от: mrowcp в 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, трябва да е... единично число.


Титла: Re: bash скрипт и сравняване на час
Публикувано от: jet в 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