diegoramos
(usa Debian)
Enviado em 29/10/2008 - 12:22h
Mais uma vez agradeço imensamente a atençao de voces. =]
Vamos ao relatório de bordo. ( :) )
!----------------------------------------------------------------!
Sandro,
Estou me baseando nas idéias que voce tem me dado e consgui alguns exitos.
Denis,
Consegui exito com o exemplo que me passou.
Porem nao entendo muito de awk(=T),mas funcionou sim.
O que esta implicando agora é a questão das outras linhas,teria que implementar uma estrutura de repetição.
obs: eu executei o seu exemplo da seguinte maneira : cat arq.txt | ./script.sh
E estou com Tempo pra terminar esse script,por isso não seria viável fuçar o man do awk no momento. =| ( =T )
!----------------------------------------------------------------!
Atualmente o script se encontra assim :.
________________________INICIO do SCRIPT________________________
#!/bin/bash
## Listando arquivos no diretorio
narqs ()
{
for arqs in `ls *.awd`;
do
echo $arqs
done
}
qtdarqs ()
{
narqs | wc -l
}
## Pega os dados do registro,verifica HEADER e REGISTRO de cada arquivo encontrado
pega_dados()
{
local cont=0;
qtdlin=$(narqs | cat ${arqs[$cont]} | wc -l)
if [ `qtdarqs` -ne "$cont" ];then
if [ "$qtdlin" -ne "$cont" ];then
for i in `narqs${arqs[$cont]} | cat ${1[$cont]} | read HEADER REGISTRO`
do
echo "$HEADER"
echo "\n"
echo "$REGISTRO"
cont++;
done
valida_header $HEADER $REGISTRO
fi
fi
}
valida_header()
{
if [ $1 -eq 0 ]
then
echo "TIPO_REGISTRO $1 Ok!"
pega_dados
else
echo "TIPO_REGISTRO diferente de 0. Abortando."
echo "TIPO REGISTRO(HEADER): $1" >> relatorio.txt
echo "TIPO REGISTRO(DETALHES) : $2" >> relatorio.txt
echo " " >> relatorio.txt
mail -s "Erro na Importacao" admin@domain.com.br < relatorio.txt
pega_dados
fi
}
pega_dados
________________________FIM do SCRIPT________________________
Como já tinha dito,já tinha em mente que o script teria que aumentar,e bem aumentou.
A mudança que teve(ja editada acima) foi em relaçao a segunda linha.
Todos os arquivos que o script terá que ler,terão o seguinte formato:
------------------Inicio do Arquivo----------------------------
018092008401
100E4010001448 ALAMEDA 11
100E4010001448 ALAMEDA 12
......(algo como nas linhas 2 e 3)
---------------Fim do Arquivo----------------------------------
Foi uma pequena mudança no arquivo,mas uma considerável no script(aos meus olhos).
O que tentei fazer com o script é o seguinte :.
1- Listar os arquivos de determinada extensao existente no diretorio atual.(funçao narqs)
2- Pega o primeiro arquivo selecionar,ler a primeira linha e a segunda,verifica se a primeira linha começa com 0,senão,chama o outro arquivo,se sim continua lendo as outras linhas do arquivo.
3- Em caso de algum erro envia o $HEADER(primeira linha) e o $REGISTRO(linha atual),seria interessante enviar tambem o nome do arquivo para o relatorio.
+ Estou depurando,porem estou encontrando algumas coisas das quais não estou entendendo. ( :s )
Se pudessem me ajudar a clarear minhas idéias. ;)
Acho que estou errando em detalhes de codigo,acho que a logica nao esta errada,creio eu.
Na minha ultima depuracao aqui,está acusando erro na linha 45 ( if [ `qtdarqs` -le "$cont" ];then ) :
reg_buster.sh: line 45: [: too many arguments
Agradeço muito a voces. =]
(ansioso)