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

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

RES: [shell-script] testar se é numérico


From: Élvio Barbalho
Subject: RES: [shell-script] testar se é numérico
Date: Fri, 24 Nov 2006 11:34:11 -0200

Tiago bom dia, tentei usar a expressão abaixo e não funcionou:

[elvio@10:31:47 elvio]$ cat teste.sh
#!/bin/bash

verifica()
{
        if [[ "$1" =~ '^[0-9]*$' ]]; then
                echo 'ok'
        else
                echo 'nok'
        fi
}

verifica a


verifica 44

[elvio@10:31:49 elvio]$ ./teste.sh
./teste.sh: line 5: conditional binary operator expected
./teste.sh: line 5: syntax error near `=~'
./teste.sh: line 5: `   if [[ "$1" =~ '^[0-9]*$' ]]; then '
[elvio@10:31:54 elvio]$


Att.
Elvio Barbalho
Técnico de Produção
GEOTI - Gerência de Operações e Tecnologia
* Phone: +55 061 2108-8863
* Email: address@hidden
Visite nosso site: www.atp.com.br



> ----- Mensagem original -----
> De:           Tiago Barcellos Peczenyj [SMTP:address@hidden]
> Enviada em:           sexta-feira, 24 de novembro de 2006 10:42
> Para:         address@hidden
> Assunto:              Re: [shell-script] testar se é numérico
> 
> Bem lembrado, Julio.
> 
> Eu pensei na expressão ^[0-9]*$ - ou seja, "tudo o que estiver entre o fim
> da string, que sejam cadeias de caracteres entre 0 e 9" - poderia ser
> feito
> assim:
> 
> $ verifica() { if [[ "$1" =~ '^[0-9]*$' ]]; then echo 'ok' ; else echo
> 'nok'
> ; fi ; }
> 
> $ verifica 99
> ok
> 
> $ verifica xxx
> nok
> 
> $ verifica 9a
> nok
> 
> Ainda é possivel verificar pelos atalhos && e ||
> 
> [[ "$VAR" =~ '^[0-9]*$' ]] && echo 'ok' || echo 'nok'
> 
> On 11/22/06, Julio C. Neves < address@hidden
> <mailto:julio.neves%40gmail.com>> wrote:
> >
> > Tiago,
> > o case usa caracteres coringa e não expressões regulares, por isso é que
> a
> > sua solução não funcionou. Há uns 3/4 meses, vc (tenho quase certeza que
> > foi
> > vc) colocou uma msg no grupo que viria bem a calhar com o problema do
> > Marcelo, era o uso do cmd test com a sintaxe [[ Op1 =~ regexp ]].
> >
> > Acho essa solução tão legal que acho que merece vc procurar nos seus
> > alfarrábios e colocar novamente na lista.
> >
> > Abração,
> > Julio
> > :wq
> >
> > 2006/11/22, Marcelo Loureiro < address@hidden
> <mailto:mvloureiro%40gmail.com><mvloureiro%40gmail.com>
> > >:
> > >
> > > Tiago, tentei dessa forma também e se VAR=1b, por exemplo, esse case
> diz
> > > que
> > > é numérico.
> > >
> > > O jeito que consegui (até agora) foi tentar somar um valor à variável
> e
> > > testar o return code. Se conseguiu somar, é numero. Se não conseguiu,
> > > não é número.
> > >
> > > valeu
> > >
> > > 2006/11/22, Tiago Barcellos Peczenyj < address@hidden
> <mailto:tiago.peczenyj%40gmail.com><tiago.peczenyj%40gmail.com>
> > <tiago.peczenyj%40gmail.com>
> > > >:
> > > >
> > > > a melhor forma seria por expressões regulares
> > > >
> > > > case ${VAR} in
> > > > [0-9]*) echo "eh numerica" ;;
> > > > *) echo "nao eh numerica" ;;
> > > > esac
> > > >
> > > > On 11/22/06, Marcelo Loureiro < address@hidden
> <mailto:mvloureiro%40gmail.com><mvloureiro%40gmail.com>
> > <mvloureiro%40gmail.com>
> > > <mvloureiro%40gmail.com>>
> > > > wrote:
> > > > >
> > > > > alguém tem uma função pronta para testar se uma variável é
> numérica
> > ?
> > > > >
> > > >
> > > > --
> > > > Tiago B Peczenyj
> > > > Linux User #405772
> > > >
> > > > # cd /pub
> > > > # more beer
> > > >
> > > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> > --
> > Abraços,
> > Julio
> > <http://www.julioneves.com> - Um livro sobre Bash completo e on-line
> > :wq
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > 
> >
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> # cd /pub
> # more beer
> 
> [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]