Bash дата / время арифметика - PullRequest
7 голосов
/ 09 июня 2009

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

#!/bin/sh
let SECS=$1*60
echo "Sleeping for" $1 "minutes, which is" $SECS "seconds."
sleep $SECS &&
pm-suspend

Единственным аргументом сценария будет то, на сколько минут компьютер должен быть приостановлен. Все, что я хочу добавить к этому сценарию, - это, в основном, echo высказывание, например. «Спать до ЧЧ: nn: ss!». Есть идеи?

Ответы [ 3 ]

9 голосов
/ 09 июня 2009

Узнал как.

echo "The computer will be suspended at" $(date --date "now $1 minutes")
1 голос
/ 24 июля 2013

на Linux

SECS=`date "+$s"`
SECS=$(( SECS + $1 * 60 ))
date --date $SECS
1 голос
/ 01 ноября 2009

В системах, основанных на BSD, вы должны использовать

date -r $(( $(date "+%s") + $1 * 60 ))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...