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

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

Re: [shell-script] Como testar se o parâmetro passado só tem dígitos?


From: Felipe Kellermann
Subject: Re: [shell-script] Como testar se o parâmetro passado só tem dígitos?
Date: Fri, 8 Aug 2003 21:55:37 -0300 (BRT)

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


reply via email to

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