[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] Comparar Arquivos,
Julio Cezar Neves - DATAPREVRJ <=