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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: ENC: [shell-script] Verificar arquivos maiusculos !!!


From: Julio Cezar Neves - DISB.O
Subject: RES: ENC: [shell-script] Verificar arquivos maiusculos !!!
Date: Fri, 11 Jan 2002 15:41:04 -0300

Fala Aurélio (acho que vou te chamar de auré para otimizar o código do seu
nome :^)

Repare que o Jorge citou que trabalhava com HP, então na 1a. linha coloquei
o bourne shell com interprete. Sou um pouco receoso do interpretador do
HP-UX, ele tem um monte de particularidades. Mas vamos aos seus comentários:

No primeiro if eu iria até:
Dir="." 
[ $# -eq 1 ] && Dir=$1

não passaria disto. Nos meus scripts vc só vê ponto-e-vírgula no case :^)
Este artifício não te dá nenhum ganho de performance e dificulta a
legibilidade. Já haviámos conversado sobre isso, lembra-se?

A construção [ $1 ] que julgava universal (até aconselho no meu livro usá-la
ao invés, de [ -z $1 ]), pouco antes do natal me deu uma boa surra, pois não
funcionava em um AIX que acabamos de receber.

A construção Dir=$1 ; : ${Dir:=.}, testei no borne shell e funciona. Não a
conhecia mas já estou fuçando para aprender.

Qto à linha <for ArqMai in `ls | grep '^[A-Z].*$'`> vc tem razão. Foi muito
preciosismo de minha parte. Fica bem melhor do jeito q vc fez.

O test -nt não existe no sh (pelo menos no SVR4).

Não sei como vc não bronqueou da linha <ArqMin=`echo $ArqMai | tr "[A-Z]"
"[a-z]"`> por causa das cochetas :^) no meu livro eu digo que elas são
desnecessárias e após ter feito esta afirmação descobri que nem todos os
sabores permitem cosntrução do tipo tr 'A-Z' 'a-z'

Amigão um forte abraço e boas férias. Se passar pelo RJ avise que vou tentar
te encontrar antes de leverem a tua carteira :º). Vc vai tirar férias da
lista tb? :(

-----Mensagem original-----
De: # aurelio marinho jargas [mailto:address@hidden]
Enviada em: sexta-feira, 11 de janeiro de 2002 13:43
Para: address@hidden
Assunto: Re: ENC: [shell-script] Verificar arquivos maiusculos !!!


ae juliao,

uma coisa que gosto de discutir é otimização de código.
se for sem prejudicar a legibilidade, melhor ainda.

vou ser mala e comentar alguns trechos &:)

uma coisa que acho legal é ao invés de usar o then e o else, você
definir um padrão e SE tal coisa, muda o valor. assim o trecho:

> if  [ $# -eq 1 ]
> then
>     Dir=$1
> else
>     Dir="."
> fi

ficaria:

Dir="."           # esse é o padrão
if [ $# -eq 1 ]   # se tiver um substituto, muda o valor
then
    Dir=$1
fi

mas como agora só tem o then mesmo, o && pode ser usado:

Dir="." ;
[ $# -eq 1 ] && Dir=$1

e dá pra botar na mesma linha pra ficar visual que é tudo
relativo a mesma variável Dir:

Dir="." ; [ $# -eq 1 ] && Dir=$1

e por último, o teste do $# checa se tem o $1, isso pode ser
feito diretamente referenciando-o entre aspas (importante não
esquecer das aspas!)

Dir="." ; [ "$1" ] && Dir=$1

traduzindo:

"Dir é igual a ponto. Mas se tiver $1, Dir é igual a $1."

ou podemos até obscurecer um pouquinho e usar a expansão de
variáveis do shell:

Dir=$1 ; : ${Dir:=.}

traduzindo:

"Dir é igual a $1. Se a variável Dir não tiver conteúdo, coloque
o conteúdo . nela"


tá. viajei demais...
mas é que segunda-feira já estarei de férias, e como vou passar
um mês longe do computador, vocês me dão um desconto né? &:P


> for ArqMai in `ls | grep '^[A-Z].*$'`

opa, aqui o shell pode fazer isso sozinho:

  for ArqMai in `ls [A-Z]*`



> # listando os 2 em ordem cronologica (-t) e
> # pegando o + novo (head -1). Se for o Maiusculo...
>  [ `ls -t $ArqMai $ArqMin | head -1` -eq $ArqMai ] && mv -f $ArqMai
$ArqMin

não sei se isso é exclusividade do test da GNU, mas o meu aqui
tem a opção "Newer Than":

  arquivo1 -nt arquivo2
    Verdadeiro se o arquivo1 é mais novo que o arquivo2
    (levando-se em conta a data de modificação dos mesmos).

então o trecho acima podia ficar:

  [ $ArqMai -nt $ArqMin ] && mv -f $ArqMai $ArqMin



-- 
http://verde666.org s/click/^a]/;^[:wq


Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 


From (no email address) Fri Jan 11 11:03:41 2002
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-8_0_1_3); 11 Jan 2002 19:03:39 -0000
Received: (qmail 35081 invoked from network); 11 Jan 2002 19:03:39 -0000
Received: from unknown (216.115.97.167)
  by m10.grp.snv.yahoo.com with QMQP; 11 Jan 2002 19:03:39 -0000
Received: from unknown (HELO perninha.conectiva.com.br) (200.250.58.156)
  by mta1.grp.snv.yahoo.com with SMTP; 11 Jan 2002 19:03:39 -0000
Received: from burns.conectiva (burns.conectiva [10.0.0.4])
        by perninha.conectiva.com.br (Postfix) with SMTP id EAADF38E2A
        for <address@hidden>; Fri, 11 Jan 2002 16:03:30 -0300 (EST)
Received: (qmail 3146 invoked by uid 0); 11 Jan 2001 19:03:33 -0000
Received: from verde.conectiva (10.0.2.168)
  by burns.conectiva with SMTP; 11 Jan 2001 19:03:33 -0000
Date: Fri, 11 Jan 2002 17:04:43 -0200 (BRST)
X-X-Sender:  <verde@verde.conectiva>
To: <address@hidden>
Subject: Re: RES: ENC: [shell-script] Verificar arquivos maiusculos !!!
In-Reply-To: <53EFD9E3C76F5D40AB14E9775CDFC9FB02FAD04C@wtrjo093>
Message-ID: <Pine.LNX.4.33L.0201111652570.898-100000@verde.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
From: # aurelio marinho jargas <address@hidden>
X-Yahoo-Group-Post: member; ug194321
X-Yahoo-Profile: verde6666

grande jul &:)

@ 11/1, Julio Cezar Neves - DISB.O:
> Fala Aurélio (acho que vou te chamar de auré para otimizar o código do seu
> nome :^)
>
> Repare que o Jorge citou que trabalhava com HP, então na 1a. linha coloquei
> o bourne shell com interprete. Sou um pouco receoso do interpretador do
> HP-UX, ele tem um monte de particularidades. Mas vamos aos seus comentários:

s/particularidades/deficiências/  &:)


> No primeiro if eu iria até:
> Dir="."
> [ $# -eq 1 ] && Dir=$1
>
> não passaria disto. Nos meus scripts vc só vê ponto-e-vírgula no case :^)
> Este artifício não te dá nenhum ganho de performance e dificulta a
> legibilidade. Já haviámos conversado sobre isso, lembra-se?

botar numa linha é mais pensando caso tivessem mais variáveis que
você precisasse fazer o mesmo, então bastaria enfileirá-las uma
embaixo da outra. mas nem faz diferença mesmo &:)

> A construção [ $1 ] que julgava universal (até aconselho no meu livro usá-la
> ao invés, de [ -z $1 ]), pouco antes do natal me deu uma boa surra, pois não
> funcionava em um AIX que acabamos de receber.

ah é, putz, que palha...
esse lance de compatibilidade é algo que pega, COMO ISSO É CHATO!


> A construção Dir=$1 ; : ${Dir:=.}, testei no borne shell e funciona. Não a
> conhecia mas já estou fuçando para aprender.

opa, essa é meio chatinha mesmo, mas é uma mão na roda nesse
negócio de definir valores padrão. tá na seção "Parameter
Expansion" do man bash.

aqui está a lista de tipos disponíveis pro bash2
(acho que só as 4 primeiras são compatíveis com o /bin/sh)
(talvez o ${#var} e os ${var#} e ${var%} também)

       ${parameter:-word}
       ${parameter:=word}
       ${parameter:?word}
       ${parameter:+word}
       ${parameter:offset}
       ${parameter:offset:length}
       ${!prefix*}
       ${#parameter}
       ${parameter#word}
       ${parameter##word}
       ${parameter%word}
       ${parameter%%word}
       ${parameter/pattern/string}         # sed na variável!!!
       ${parameter//pattern/string}



> Não sei como vc não bronqueou da linha <ArqMin=`echo $ArqMai | tr "[A-Z]"
> "[a-z]"`> por causa das cochetas :^) no meu livro eu digo que elas são
> desnecessárias e após ter feito esta afirmação descobri que nem todos os
> sabores permitem cosntrução do tipo tr 'A-Z' 'a-z'

pois é, eu lembro de já ter falado aquina lista que não precisava
e depoisvocê me corrijiu que em algumas versões precisava, então
eu lembrei disso e nem falei nada &;)


> Amigão um forte abraço e boas férias. Se passar pelo RJ avise que vou tentar
> te encontrar antes de leverem a tua carteira :º).

hahahaha, nem me fale nisso que tou com multas pendentes e meu
IPVA 2001 vai sair 350 reais!!!! que paulada pra uma toyota
velha...


> Vc vai tirar férias da lista tb? :(

infelizmente &:(

de todas as listas. o mês de férias é sagrado e eu não encosto
um dedo sequer no computador pra poder VIVER um pouco. &:)

julião, aquele abraço e até logo pessoal.


--
http://verde666.org s/click/^a]/;^[:wq



reply via email to

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