[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] ajuda
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] ajuda |
Date: |
Wed, 13 Apr 2011 19:21:14 -0300 |
Fala Adolfo,
sempre que vc olhar um script e existir um $? desconfie que não está
otimizado. 90% das vezes não está e a causa é a idêntica à que vc fez.
No shell o if não testa condição. Quem testa condição é o cmd test, cujo
alias vc usou ([ $? -ne 0 ] é exatamente o mesmo que test $? -ne 0). O if do
shell testa comandos e foi o que vc fez: testou o cmd test. Ficaria mais
otimizado se vc testasse direto o fuser, da seguinte forma:
for f in *
do
if fuser -k $f
then
echo Arquivo $f nao esta em uso ## Coloque aqui o comando
para compactar.
else
echo Arquivo $f esta em uso
fi
done
Resolvi escrever isso não foi para te corrigir, mas para dar uma dica na
lista, já que é muito normal se ver esta construção pouco elegante.
Para vc testar o que estou falando, execute as linhas de comandos a seguir
em um diretório que tenha muitos arquivos e observe a diferença entre os
tempos:
time for f in *
do
if fuser -k $f
then
:
else
:
fi
done
======================================
time for f in *
do
fuser -k $f
if [ $? -ne 0 ]
then
:
else
:
fi
done
Abraços,
Julio
*Cursos de Shell ou Zenity em fins de semana?*
*☎ Ligue (21) 8112-9988* ☎
Contacte-me [image: Twitter] <http://twitter.com/#%21/juliobash/>
Em 13 de abril de 2011 16:40, Antonio Adolfo Pessoa Verçosa <
address@hidden> escreveu:
> Segue um programinha:
>
> for f in *
> do
> fuser -k $f
> if [ $? -ne 0 ]
> then
> echo Arquivo $f nao esta em uso ## Coloque aqui o comando
> para compactar.
> else
> echo Arquivo $f esta em uso
> fi
> done
>
> *Adolfo Verçosa*
> *http://adolfovercosa.blogspot.com/*
> *Fortaleza-CE*
>
>
> Em 12 de abril de 2011 15:52, <address@hidden> escreveu:
>
> >
> >
> >
> > Ola, pessoal
> >
> > Eu criei o seguinte script
> >
> > #!/bin/bash
> >
> > for arqs in $(find *.dat); do bzip2 -9k $arqs; done
> >
> > Para compactar todos arquivos dat. e queria colocar no cron de hora em
> > hora, porem tem um problema, para ele compactar tem q ver ser o arquivo
> esta
> > aberto...como eu posso usar lsof para ver se o arquivo esta aberto, se o
> > arquivo esta aberto ele nao pode fazer o bzip, e sim nao tiver aberto ele
> > pode compactar...voce pode me ajudar...
> >
> > Abraços
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
>
> --
> **
> *
> *
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> 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.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>
[As partes desta mensagem que não continham texto foram removidas]