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



reply via email to

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