Como somar data (em minutos) Shell

0

Preciso de ajuda aqui, não sou especialista em scripts de shell, mas estou tentando fazer um script no qual preciso usar o número da Época seguido da data, mas com todas as horas do dia com um intervalo de 15 minutos. O resultado será algo como isto

1376708400|2013-08-17 00:00:00
1376709300|2013-08-17 00:15:00
1376710200|2013-08-17 00:30:00

No total, eu terei 96 linhas, a minha maior dúvida agora é como eu posso incrementar (ou somar) os minutos em 15 minutos, eu tentei isso

Meu roteiro completo agora é isto (eu sei que é terrível, mas eu não sou verdadeiramente um programador. Estou aprendendo)

i=96

_incrementatime='+15 minutos'

count=1

_Date=$('date "2013-08-29 00:00:00"')
_dataEmSeg = 'date -d "2013-08-29 00:00:00" +%s'

while  test $i -ne 0

do
    _VarData=$('date --date="$_incrementatime*count"')

    _exprt=$(expr '$_Date+$_VarData')
    echo "$_dataEmSeg  e  $_exprt    "

    i=$((i-1))
    count=$((count+1))
done

Se alguém puder me dar as instruções para resolver isso, ficarei muito agradecido.

    
por Victor Paiva 04.09.2013 / 21:54

2 respostas

0

Se você estiver usando o GNU date , ele pode quase fazer tudo sozinho:

#!/usr/bin/env bash

_Date=$(date -d "2013-08-29 00:00:00");
for ((i=0; i<96; i++)); do 
    echo $(date -d "$_Date" +%s)"|"$(date -d "$_Date" +"%F %T")
    _Date=$(date -d "$_Date +15 minutes")
done

Vários erros e etapas desnecessárias no seu script foram removidos ou corrigidos.

    
por 04.09.2013 / 23:28
0

Você não mencionou o sistema em que está, mas há dseq(1) da minha coleção dateutils para produzir um sequência de datas:

$ dseq '2013-08-17 00:00:00' +15m '2013-08-18 00:00:00' -f '%s|%F %T'
1376697600|2013-08-17 00:00:00
1376698500|2013-08-17 00:15:00
...

Os primeiros 3 argumentos denotam o ponto inicial e final da sequência, sendo o intermediário o incremento (assim como seq(1) na verdade). A opção -f permite especificar o formato de saída e recebe especificadores de formato semelhantes aos do GNU date .

    
por 11.11.2013 / 07:32