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

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

Re: [shell-script] Comparando porcentagem com if ??


From: Julio C. Neves
Subject: Re: [shell-script] Comparando porcentagem com if ??
Date: Sat, 22 Nov 2008 10:22:00 -0200

Rafael, vamos lá:

qdo vc usa o cmd test com a sintaxe [ c1 < c2 ], vc está comparando cadeias
e assim mesmo, vc tem de escapar o menor que (<). Veja:

$ a=a
$ b=b
$ [ $a < $b ] && echo menor
bash: b: Arquivo ou diretório inexistente
$ [ $a \< $b ] && echo menor
menor

Uma forma melhor de fazer isso seria usando o intrínseco (*builtin*) da
forma [[ c1 < c2 ]], veja:

$ [[ $a < $b ]] && echo menor
menor

Porém temos aí um problema, olha só isso:

$ a=10%
$ b=2%
$ [[ $a < $b ]] && echo menor
menor

Isso aconteceu pq a comparação por ser alfa, testa byte a byte e o primeiro
byte de $a (1) é menor que o primeiro byte de $b (2).

Então, para finalizar, acho que vc deveria excluir o símbolo de % das
variáveis e compará-las numericamente. Veja mais detalhes sobre o tema
aqui<http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo004>e
aqui<https://twiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Testes_usando_express_es_regular>.
Está escrito em português, e vc perderá menos tempo para ler, do que eu
demorei para escrever este e-mail. Se vc quiser aprender *mesmo* a programar
em shell, leia os Papos de Botequim publicados em http://www.julioneves.com.
-- 
Abração,
Julio
*Cursos de Shell nos finais de semana:
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988*

2008/11/21 Rafael Tomelin <address@hidden>

>   Guilherme,
>
> Valeu, quero mesmo fazer comparaç~oes num'ericas (porcentagem), pois tenho
> que ver a porcentagem do disco usado.
>
> 2008/11/21 Guilherme Gall <address@hidden <gmgall%40gmail.com>>
>
>
> > Rafael,
> >
> > Provavelmente você está se confundindo um pouco com a sintaxe porque é
> > possível fazer comparações numéricas usando ((comparação))
> >
> > Exemplo:
> >
> > $ echo $var
> > 10
> >
> > $ if ((var > 10))
> > > then
> > > echo Maior que 10
> > > else
> > > echo Não é maior que 10
> > > fi
> > Não é maior que 10
> >
> > $ if ((var == 10)); then echo Igual a 10; else echo Não é igual a 10; fi
> > Igual a 10
> >
> > Comparações numéricas "clássicas" são feitas com o comando test ou [
> >
> > Mesmos exemplos acima:
> >
> > $ if [ $var -gt 10 ]; then echo Maior que 10; else echo Não é maior que
> 10;
> > fi
> > Não é maior que 10
> >
> > $ if [ $var -eq 10 ]; then echo Igual a 10; else echo Não é igual a 10;
> fi
> > Igual a 10
> >
> > Pela comparação que você está tentando fazer - $STATUS3 > "50%",
> > parece que você está tentando fazer uma comparação numérica. Se for
> > isso mesmo, eu retiraria a porcentagem e faria uma comparação usando
> > um dos métodos mostrados acima.
> >
> > Opções do comando test em http://aurelio.net/shell/canivete.html#test
> >
> > Espero ter ajudado,
> > --
> > Guilherme Magalhães Gall
> >
> > ---------- // ----------
> >
> > 2008/11/21 Rafael Tomelin <address@hidden<rafael.tomelin%40gmail.com>
> <rafael.tomelin%40gmail.com>
> > >:
> >
> > > Olá pessoal,
> > >
> > > Quero pegar a porcentagem de disco usado e fazer uma comparação, mas
> está
> > me
> > > retornando erro aqui.
> > >
> > > Estou fazendo da seguinte forma:
> > >
> > > PORC=`df -lh | grep var | awk -F' ' '{ print $5 }'`
> > >
> > > if ( $PORC == "30%" ); then
> > > STS=1
> > > fi
> > >
> > > mas não funciona, .. como poderia resolver esse problema?
> > >
> > >
> > > [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<shell-script-unsubscribe%40yahoogrupos.com.br>
> <shell-script-unsubscribe%40yahoogrupos.com.br>
> > > ----------------------------------------------------------
> > > 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]
>
>  
>



-- 
Abração,
Julio
Cursos de Shell nos finais de semana:
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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