Strona 1 z 1

[+] Bash funkcja dodająca czas

: 01 stycznia 2012, 22:26
autor: DaVidoSS
Witajcie. Staram się stworzyć skrypt umożliwiający dodanie jakiegoś czasu do danej godziny w formacie h:m:s.

Kod: Zaznacz cały

#!/bin/bash
echo -n "Wprowadź czas  główny w formacie h:m:s:- "
read servertime
echo -n "Wprowadź  pozostały czas  do wydarzenia w formacie h:m:s:- "
read timeleft
SH=`echo $servertime  | awk -F ":" '{print $1}'`
TH=`echo $timeleft  | awk -F ":" '{print $1}'`
SM=`echo $servertime  | awk -F ":" '{print $2}'`
TM=`echo $timeleft  | awk -F ":" '{print $2}'`
SS=`echo $servertime  | awk -F ":" '{print $3}'`
TS=`echo $timeleft  | awk -F ":" '{print $3}'`

AH=$(($SH+$TH))
AM=$(($SM+$TM))
AS=$(($SS+$TS))

echo "Wydarzenie będzie miało miejsce o godzinie:- $AH:$AM:$AS "
Skrypt działa do momentu próby dodania czasu który po zsumowaniu przekracza liczbę 60.

Jak należy prawidłowo to sformułować?

: 01 stycznia 2012, 23:06
autor: Rafal_F
Nie można wstawić instrukcji warunkowej? Jeżeli sekundy > 60 to odejmij od nich 60 i dodaj 1 do minut, podobnie z minutami i po problemie.

: 01 stycznia 2012, 23:16
autor: DaVidoSS
Niestety to przekracza moje możliwości percepcji.

Kod: Zaznacz cały

davidoss-sid@debian-sid:~$ sh czas
Wprowadź czas  główny w formacie h:m:s:- 21:31:56
Wprowadź  pozostały czas  do wydarzenia w formacie h:m:s:- 01:31:34
Wydarzenie będzie miało miejsce o godzinie:- 22:62:90

: 01 stycznia 2012, 23:32
autor: Rafal_F

Kod: Zaznacz cały

#!/bin/bash
echo -n "Wprowadź czas  główny w formacie h:m:s:- "
read servertime
echo -n "Wprowadź  pozostały czas  do wydarzenia w formacie h:m:s:- "
read timeleft
SH=`echo $servertime  | awk -F ":" '{print $1}'`
TH=`echo $timeleft  | awk -F ":" '{print $1}'`
SM=`echo $servertime  | awk -F ":" '{print $2}'`
TM=`echo $timeleft  | awk -F ":" '{print $2}'`
SS=`echo $servertime  | awk -F ":" '{print $3}'`
TS=`echo $timeleft  | awk -F ":" '{print $3}'`

AH=$(($SH+$TH))
AM=$(($SM+$TM))
AS=$(($SS+$TS))
if [ $AS -ge 60 ]; then
    AS=$(($AS-60))
    AM=$(($AM+1))
fi
if [ $AM -ge 60 ]; then
    AM=$(($AM-60))
    AH=$(($AH+1))
fi

echo "Wydarzenie będzie miało miejsce o godzinie:- $AH:$AM:$AS "
 

: 02 stycznia 2012, 01:00
autor: DaVidoSS
Pięknie.
Dziękuję bardzo.