Comparação de data atual com data de arquivo externo

1. Comparação de data atual com data de arquivo externo

Diego Lopes dos Santos
diegovitr

(usa Ubuntu)

Enviado em 04/10/2016 - 10:18h

Bom dia, pessoal!
Estou fazendo um script que lê um arquivo de texto e verifica se dentro deste arquivo tem a data de hoje.
O problema que venho enfrentando é que preciso validar os casos onde se ocorrer de o usuário digitar a data em formato fora do padrão
00/00/0000.
Ex: 4/10/2016
03/1/2016

Atualmente estou fazendo o código desta forma:
dateNow=$(date "+%d/%m/%Y")
while read line; do
#se a linha lida não estiver no padrão 00/00/0000 consertar acrescentando 0 a esquerda e comparar. Ex: 4/10/2016 para 04/10/2016; 03/1/2016 para 03/01/2016
if [ `echo $dateNow | grep $line` ]; then
echo "Ação se for igual as datas"
fi
done < /opt/arquivoDeTexto


Ja fiz algumas tentativas sem sucesso, mas não estou conseguindo. Não tenho muito conhecimento em Shell Script mas estou tentando aprender.
Desde já agradeço a ajuda de vocês!


  


2. Re: Comparação de data atual com data de arquivo externo

Renan Arantes
R3nan

(usa Debian)

Enviado em 04/10/2016 - 11:00h

eu faria essa validação na entrada de dados do usuario usando dialog ficaria assim:


#!/bin/bash
data=$(dialog --stdout --calendar "Escolha uma data" 0 0)
echo $data


a variável data vai receber a data que o usuário selecionar no calendário, com o dialog vc evita todas as possibilidades de informar datas erradas tipo 32/02/2016 ou 1/1/16 etc...

para usar o dialog vc precisa instala-lo apt-get install dialog se o seu sistema não o tiver

espero ter ajudado
Ate +


3. Re: Comparação de data atual com data de arquivo externo

Diego Lopes dos Santos
diegovitr

(usa Ubuntu)

Enviado em 04/10/2016 - 11:43h

R3nan escreveu:

eu faria essa validação na entrada de dados do usuario usando dialog ficaria assim:


#!/bin/bash
data=$(dialog --stdout --calendar "Escolha uma data" 0 0)
echo $data


a variável data vai receber a data que o usuário selecionar no calendário, com o dialog vc evita todas as possibilidades de informar datas erradas tipo 32/02/2016 ou 1/1/16 etc...

para usar o dialog vc precisa instala-lo apt-get install dialog se o seu sistema não o tiver

espero ter ajudado
Ate +


Oi R3nam!
Eu me expressei errado. Quando falei do usuário digitar na verdade ele vai digitar direto no arquivo de texto que o script vai ler, ou seja, ele vai preencer esse arquivo de texto para o script ler.




4. Re: Comparação de data atual com data de arquivo externo

Renan Arantes
R3nan

(usa Debian)

Enviado em 04/10/2016 - 11:48h

mesmo assim! vc pode mandar a saida do dialog calendar ja pro arquivo texto no formato correto, dessa forma vc sempre terá a data dentro do txt no formato correto (usando o dialog --calendar)


5. Re: Comparação de data atual com data de arquivo externo

Renan Arantes
R3nan

(usa Debian)

Enviado em 04/10/2016 - 11:50h

fica assim :


#!/bin/bash
data=$(dialog --stdout --calendar "Escolha uma data" 0 0)
echo $data > /opt/arquivoDeTexto



6. Re: Comparação de data atual com data de arquivo externo

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/10/2016 - 12:25h

Velho ... como a galera já deu idéia eu só vou reforçar .. o lance seria vc validar a entrada pois existem N maneiras de o usuário não entrar com o formato certo

04-10-2016
04-10-16
4-10-2016
04/10/2016
4/10/2016
4/10/16

e por aí vai .... sem falar na questão de entrar com data errada ... tipo 04/10/2061
___________________________________________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


7. Re: Comparação de data atual com data de arquivo externo

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 04/10/2016 - 12:46h

Olá,
Tem que validar a entrada edite o script de acordo a sua necessidade.
Segue minha contribuição

#!/bin/bash
SHELL=/bin/sh
PATH=/sbin:/usr/sbin:/usr/bin:/bin

echo -n >/tmp/confere-data.txt

date +%d/%m/%Y | awk -F " " '{print "data " $1 }' >>/tmp/confere-data.txt

date +%d.%m.%Y | awk -F " " '{print "data " $1 }' >>/tmp/confere-data.txt

date +%d-%m-%Y | awk -F " " '{print "data " $1 }' >>/tmp/confere-data.txt

clear

while
echo -e "\n\033[01;32mDigite a data:\n \033[01;37m"
read data
VERIFICA=` cat /tmp/confere-data.txt | grep "\b$data\b" | wc -l `
do
echo ""
if [ "$VERIFICA" -gt "0" ] ; then
echo -e "A Data $data está correta\n"
else
echo -e " Data $data incorreta \n"
fi
done



---> Márcio M M <---






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts