shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: [shell-script] Comparar Arquivos


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Comparar Arquivos
Date: Thu, 22 May 2003 16:20:56 -0300

Aguinaldo,
vc quase acertou. Vc fez:

while arquivo not EOF
dDo
comandos;
done;

deveria ter feito:

while read linha
do
comandos;
done < arquivo

ou

cat arquivo |
while read linha
do
comandos;
done

O 1º é mais eficiente porém menos legível.

O cmd while, assim como o if, testa a instrução seguinte (no caso read) e
permanece no loop até que esta instrução dê um código de retorno ($?) de
erro, o que acontecerá quando ler o EOF, saindo então do loop.

[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070  /  9853-4044
*address@hidden


> -----Mensagem original-----
> De: Aguinaldo Fernandes Rosa [mailto:address@hidden]
> Enviada em: quinta-feira, 22 de maio de 2003 17:22
> Para: address@hidden
> Assunto: [shell-script] Comparar Arquivos
> 
> 
> Caros colegas,
> 
> Tenho o seguinte cenario,
> 
> Tenho um servidor central para onde mando arquivos compactados atraves
> do tar.gz e o nome dos arquivos é gerado atraves da conversao de data
> para string, ou seja, pego a data atual transformo em string 
> e o nome do
> arquivo vai ser essa string.tar.gz.
> 
> Estes arquivos ficam no meu servidor em uma determinada pasta chamada
> "atualizacoes" pois eles servem para maquinas remotas conectarem e
> copia-los para atualizarem sua base.
> 
> Quando uma maquina remoto conecta no servidor, antes de copiar ela
> precisa verificar quais arquivos ela precisa copiar(copia 
> somente os que
> ela ainda não tem). Estou tentando fazer essa comparacao 
> atraves do nome
> do arquivo, que na verdade é a data da ultima atualizacao.
> 
> Entao, na maquina remota possuo um arquivo chamado listalocal.log que
> contem somente uma linha cujo conteudo é algo assim " 030521 
> " ou seja,
> o ultimo arquivo atualizacao foi do dia 21/05/03. Preciso 
> comparar essa
> linha com o arquivo do servidor que é chamado listaserver.log 
> que contem
> n linhas com todos os arquivos gerados de atualizacao.
> 
> Entao como a maquina so precisa copiar as atualizacoes que 
> ela não tem,
> ela precisa pegar o log local e comparar com o log do servidor e
> verificar em ordem crescente, quais as atualizacoes que ela 
> não possui.
> Quando ela chegar em uma linha que for maior do que a do log local é
> porque a atualizacao ainda não foite feita, entao ela precisa 
> entrar no
> diretorio de atualizacoes e copiar o arquivo referente aquela data,
> descompactar e jogar na base local dela. Feito isso ela passa para o
> proxima linha e continua comparando pois podem haver mais de uma
> atualizacao.
> 
> Estou tentando fazer uma comparacao que pegue o conteudo do 
> arquivo 1 e
> compare linha por linha com o arquivo 2 e faça o que mencionei acima,
> acontece que minha estrutura na da certo. Como faco dentro de 
> um script
> para fazer uma estrutura que va da primeira linha ate EOF. Ou seja,
>  
> While arquivo not EOF
> Do
> Comandos;
> Done;
> 
> Não consigo fazer essa estrutura.
> 
> Alguem pode me ajudar,
> 
> Obrigado,
> 
> Aguinaldo.
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de 
> programação, como perl, C etc. Quem insistir em não seguir 
> esta regra será moderado sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]