(Resolvido)Calculo de tempo em shell Script

Iniciado por Andreson Goveia, 27 de Julho de 2010, 04:18

tópico anterior - próximo tópico

Andreson Goveia

Galera é o seguinte, estou tentando ajudar um colega de trabalho a fazer um script que de o tempo da subtração de duas variáveis de tempo.
nelas tenho o tempo inicial (ex: 10:05:20) e a final (ex: 13:25:20)

neste caso acima o resultado teria que dar 03:20:00 certo?
agora como poderia fazer isso em shell script?
Lembrando que são duas variáveis de tempo que são retirada de outro arquivo (essa parte já consegui e funicona certinho).

Desde de já agradeço a atenção de vocês.

[]s.
Andreson

sistematico

Cola aqui o que você já fez que eu tento te ajudar.
Lucas Saliés Brum
Ubuntu User #27150
http://sistematico.org

bred81

#2
Eu só sei fazer isso na força bruta...

#!/bin/bash

tmp1=10:05:20
tmp2=13:25:20

var11=`echo $tmp1 | cut -c 1-2`
var12=`echo $tmp1 | cut -c 4-5`
var13=`echo $tmp1 | cut -c 7-8`

var21=`echo $tmp2 | cut -c 1-2`
var22=`echo $tmp2 | cut -c 4-5`
var23=`echo $tmp2 | cut -c 7-8`

calc1=`echo $var21-$var11 | bc`
calc2=`echo $var22-$var12 | bc`
calc3=`echo $var23-$var13 | bc`

echo "$calc1:$calc2:$calc3"

exit 0

Como eu disse, força bruta.
fred@desktop:~/scripts$ ./teste.a
3:20:0
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

Andreson Goveia

Valeu galera, mas o cara já resolveu, (mas não me explicou direito como). >:( >:(

RafaelUnixubuntu

Bom o script do nosso amigo bred81 nao esta completo...pois eu precisava de algo que imprimisse na seguite formatação hh:mm:ss e o do nosso amigo não faz isso então depois de muita pesquiza consegui melhorar o codigo dele assim:

#!/bin/sh
#Script para imprimir a diferença entre dois tempos (hh:mm:ss)

echo "Tempo inicial (hh:mm:ss)?"
read tmp1
echo "Tempo final (hh:mm:ss)?"
read tmp2

var11=`echo $tmp1 | cut -c 1-2`
var12=`echo $tmp1 | cut -c 4-5`
var13=`echo $tmp1 | cut -c 7-8`

var21=`echo $tmp2 | cut -c 1-2`
var22=`echo $tmp2 | cut -c 4-5`
var23=`echo $tmp2 | cut -c 7-8`

calc1=`echo $var11*3600 + $var12*60 + $var13 | bc`
calc2=`echo $var21*3600 + $var22*60 + $var23 | bc`
seg=$(($calc2 - $calc1))

min=$(($seg/60))
seg=$(($seg-$min*60))
hor=$(($min/60))
min=$(($min-$hor*60))


hora=`printf "%02d:%02d:%02d \n" $hor $min $seg;`

echo $hora

se você quiser apenas imprimir o ressultado e só substituir "hora=`printf "%02d:%02d:%02d \n" $hor $min $seg;`" por "printf "%02d:%02d:%02d \n" $hor $min $se"
mas no meu caso eu precisava do resultado declarado em uma variavel...espero que isso ajude alguem pois teria me ajudado...