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

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

=?iso-8859-1?Q?Re: [shell-script] Como_testar_se_o_par=E2metro_pa ssa


From: Mateus Caruccio
Subject: =?iso-8859-1?Q?Re: [shell-script] Como_testar_se_o_par=E2metro_pa ssado_s=F3_tem_d=EDgitos??=
Date: Sat, 09 Aug 2003 09:27:16 +0800

opa,

 uma opcao eh usar o comando builtin declare do bash:

$ declare -i var=33
$ echo $var
33
$ declare -i var=g5
$ echo $var
0

dessa forma tu pode testar se a variavel possui um valor valido, mas diferente 
de 0:

$ test $var -ne 0 && echo valido || echo invalido

e tudo usando somente builtin !!!!
é claro que isso vo eh util se tu precisa de uma valor numerico > 0

[]s

   Mateus Caruccio
----- Original Message -----
From: Felipe Kellermann <address@hidden>
Date: Fri, 8 Aug 2003 21:55:37 -0300 (BRT)
To: address@hidden
Subject: Re: [shell-script] Como_testar_se_o_parâmetro_passado_só_tem_dígitos?

> 
> On Fri, 8 Aug 2003 6:17pm  -0300, Valtoir wrote:
> 
> > Pensei em fazer o seguinte:
> >
> > #!/bin/bash
> > [ `echo $1 | tr -d '[:digit:]' | wc -w` -ne 0 ] &&  { echo "Valor não 
> > numérico"; exit; }
> > echo "Valor numérico"
> >
> > Alguém tem uma dica melhor?
> 
>       Função (vantagem: retorna caracteres inválidos)
>       f() { r=${1//[[:digit:]]/}; return ${#r}; }
> 
>       Ou mais simples:
>       f() { [ ! "${1//[[:digit:]]/}" ]; }
> 
>       Outra função apenas para testar, chama f:
>       g() { f "$1" && echo numérico || echo não numérico; }
> 
> $ g a12
> não numérico
> $ g 312
> numérico
> 
>       A substituição / e // não é padrão (implementação da bash). Uma
> função que faz a mesma coisa e deve funcionar em qualquer shell:
> 
>       f() { [ "$1" = "${1#*[^1234567890]}" ]; }
> 
> $ g a12
> não numérico
> $ g 312
> numérico
> 
> -- 
> Felipe Kellermann
> 
> 
> ---------------------------------------------------------------------
> 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.listasdiscussao.cjb.net
> ---------------------------------------------------------------------
>  
> 
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
> http://br.yahoo.com/info/utos.html 
> 
> 



# ########################################################
# Mateus de Oliveira Caruccio <caruccio at operamail.com>
# Linux User #183552 - UIN #37364320
# Vim, vi e matei o Emacs !



-- 
____________________________________________
http://www.operamail.com
Get OperaMail Premium today - USD 29.99/year


Powered by Outblaze


reply via email to

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