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

[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]



reply via email to

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