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