2015-06-02 2 views
0

В скрипте, над которым я работаю, пользователь определяет переменную, помеченную временем начала. Я хотел бы увеличить и уменьшить эту переменную на ± 3 часа. Формат 00:00:00 (24 часа), и я не уверен, есть ли лучший способ, который не включает манипуляции с строкой, потому что, если он меньше нуля, я не могу пройти -03: 00: 00 на Python скрипт, который использует эту переменную.Увеличение переменной времени пользователя Bash

#somescript.sh 00:01:35  
STARTTIME=$1 
E=${STARTTIME%*:} 
S=${STARTTIME##*:} && ((S=S+3) 
echo "$S : $E" 

Желаемый результат: 3:01:35 и 21:01:35

Отзыв: String Operators и Incrementing time (minutes and seconds) in bash/shell script до задаю этот вопрос. Любая помощь будет оценена.

+1

Второй вопрос, который вы якобы рассмотрели есть ответы, показывающие, как использовать дату GNU для математики даты, которая является подходящим инструментом для работы. –

+0

@CharlesDuffy Я бы не связал это, если бы не просмотрел его. Компонент даты в другом месте сценария, который не включен в вопрос, который меня беспокоил, может вызвать проблему с моей датой. Спасибо за помощь. – ImNotLeet

+0

BTW, имена всех шапок зарезервированы для встроенных переменных оболочки и переменных среды. См. Четвертый абзац http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html, имея в виду, что переменные окружения и переменные оболочки совместно используют пространство имен. –

ответ

2
starttime=$1 
endtime=$(date -u -d "$starttime 3 hours" +'%H:%M:%S') 
echo "${starttime} - $endtime" 

... используется как:

$ ./add-time 01:01:35 
01:01:35 - 04:01:35 

Если вам нужно пойти в противоположном направлении, добавить слово "назад":

endtime=$(date -u -d "$starttime 3 hours ago" +'%H:%M:%S') 
Смежные вопросы