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

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

Re: [shell-script] if com valores decimais


From: Julio C. Neves
Subject: Re: [shell-script] if com valores decimais
Date: Mon, 25 Jul 2011 23:48:15 -0300

Fala Elder,
achei muito boa a sua solução. Boa e rara. Apesar do bc ser uma mega
calculadora, muito pouca gente conhece os seus recursos.

Tenho uma saída que não é tão bonita qto a sua, mas deve ser mais rápida, pq
é shell puro. Supondo que num contenha um num real e com pto decimal, uso só
a parte inteira e o interpretador matemático.

$ num=0.123
$ ((${num%.*}>0)) && echo maior ou igual a um
$ num=2.123
$ ((${num%.*}>0)) && echo maior ou igual a um
maior ou igual a um

  Cordialmente,

Julio Neves
*Quer programar bem em Shell?
*

*Use este endereço de e-mail, o Skype ou ☎ (21)8112-9988 ☎*

*
*

**

*
*
My profiles: [image: Twitter] <http://twitter.com/juliobash>
Contact me: [image: Skype] julioneves1


Em 25 de julho de 2011 19:34, Denis Costa <address@hidden>escreveu:

> Pode ser feito com bc.
>
> $ bc <<< 'if (0.23 >= 1) print "1\n"'
> $ bc <<< 'if (3.23 >= 1) print "1\n"'
> 1
>
>
> --
> Denis Silva Costa
> Graduando em Informática (Banco de dados) - Fatec - São José dos Campos
> Usuário Linux: #516577
> Usuário Ubuntu: #31758
> Certificado LPIC-1, CLA
> "May the force be with you"
>
>
>
> Em 25 de julho de 2011 19:28, Elder Marco <address@hidden> escreveu:
>
> > **
> >
> >
> > 2011/7/25 sergio <address@hidden>
> >
> > > **
> >
> > >
> > >
> > > Caros, mais uma vez...rs
> > > tenho um arquivo com n valores...todos quebrados...ex(0.567, 0.678,
> > > 0.234.....) e assim vai.
> > > Preciso pegar os valores que são maior ou igual a 1.
> > > Então pensei em um for para ir pegando as linhas e um if para checar o
> > > valor...mas quando coloco no if ex.. a=0.567; b=1; test $a -eq $b
> > > ele me retorna o erro:
> > >
> > > bash: test: 0.531: esperado expressão de número inteiro
> > >
> > > nunca trabalhei com decimal no shell..alguem pode me ajudar?
> > >
> > > Obrigado novamente.
> > >
> > >
> > > Você poderia utilizar o awk pra isso. Troque as vírgulas por quebras de
> > linha e utilize a saída como uma entrada para o awk. Veja um exemplo:
> >
> > $ cat teste.dat
> > 0.587, 0.598, 1.2, 0.5, 3.2
> >
> > $ tr ',' '\n' < teste.dat | awk '$1 > 1 { print $1 }'
> > 1.2
> > 3.2
> >
> > ---
> > Elder Marco
> >
> > GNU/Linux User: #471180
> >
> > "Contra o positivismo, que pára perante os fenômenos e diz: 'Há apenas
> > fatos', eu digo: 'Ao contrário, fatos é o que não há; há apenas
> > interpretações'. "(Nietzsche)
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [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
> ---------------------------------------------------------------------
> 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]



reply via email to

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