Bash-скрипт, сравнение времени?

Есть bash-скрипт, в котором делаю выборку с mysql БД, и получаю, к примеру, время последнего изменения какого-то параметра

$ ./check.sh
2014-01-28 11:07:10

как мне сравнить полученный результат с текущим временем? Например, полученное от скрипта значение более , чем 20 минут назад, по сравнению с текущим временем на сервере или нет?
  • Вопрос задан
  • 11543 просмотра
Решения вопроса 1
Можно сравнить время прямо в запросе и вывести разницу или
вывести текущие время(на момент выполнения скрипта) и время изменения.
Получения текущего времени в mysql функция NOW()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Переводим время в секунды с начала юникс-эпохи, и считаем как целые. Примерно так:
SQLDATE="2014-01-28 11:07:10"
# или
SQLDATE=`./check.sh`

DATE_SQL=`date --date="$SQLDATE" +"%s"`
DATE_NOW=`date +"%s"`
DATE_DIFF_MINUTES=$[ ($DATE_NOW - $DATE_SQL) / 60 ]

if [ $DATE_DIFF_MINUTES -gt 20 ]; then
    # do stuff
fi


Убедитесь, что временные зоны в SQL и системе установлены одинаково. Либо дописывайте зону так:date --date="2014-01-28 11:07:10 +04:00"
Ответ написан
$ (date -d "2014-01-28 11:07:10" +%s ; date +%s) > 3
dmsuat@longmmdappu03 [] /applications/dmsuat/environments/ucqa/node/delete
$ cat 3
1390907230
1390908465
dmsuat@longmmdappu03 [] /applications/dmsuat/environments/ucqa/node/delete
$
В файле два числа в секундах, ваше время и текущее. Их надо вычесть и получится то что вам надо

Вычесть можно expr $var1 - $var2
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы