[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: |
Thu, 14 Apr 2011 11:54:29 -0300 |
Valeu Wagner,
passei batido e não atentei para detalhes, o que me interessava era passar o
conceito do if (esse tão maltratado builtin do shell...;). Porém se alguém
mediu os tempos que coloquei como exemplo, seria bom ver na lista só para
comparação.
Qto ao que vc falou, tb poderia e é como prefiro, fazer:
fuser -k $f || echo código de retorno diferente de zero.
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 21:41, Wagner Macedo <address@hidden>escreveu:
>
>
> Grande Júlio e suas aulas :)
>
> Mas, só um detalhe no que você postou, Júlio, para quem testar não ficar
> doido procurando o bug:
>
> Ele usou [ $? -ne 0 ], portando o comando deve ser ! fuser -k $f, com a
> exclamação, para negar o resultado.
>
> --
> Wagner Macedo
>
> 2011/4/13 Julio C. Neves <address@hidden>
>
>
> >
> >
> > 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
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
[As partes desta mensagem que não continham texto foram removidas]