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

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

Re: [shell-script] Re: Como testar se um valor digitado é um número


From: Julio C. Neves
Subject: Re: [shell-script] Re: Como testar se um valor digitado é um número
Date: Tue, 25 Sep 2007 11:12:22 -0300

Fala Junior,
uma função deve ser criada somente se ela for usada em 2 ou mais pontos
diferentes do seu programa. Assim sendo, eu faria a função da seguinte
forma:
function Le
{
#  Esta função recebe os seguintes parâmetros:
#+ $1 = 1 se for leitura do primeiro campo,
#+ $1 = 2 se for leitura do segundo
    local Num Err
    local Lin=12
    [ $1 -eq 1 ] && Lin=10
    while :
    do
        [ $Err ] &&
            {
            tput cup $Lin 40
            tput civis
            echo Erro
            read
            tput cnorm
            } > /dev/tty
        {
        tput cup $Lin 10
        tput el
        } > /dev/tty
        read -p "Informe o $1o. número: " Num
        [[ $Num =~ ^[0-9]+$ ]] && {
            echo $Num
            return
            }
        Err=1
    done
}
clear
Num1=$(Le 1)
Num2=$(Le 2)
echo $Num1 $Num2

Abraços,
Julio
Em 25/09/07, jrsreis <address@hidden> escreveu:
>
>   --- Em address@hidden<shell-script%40yahoogrupos.com.br>,
> Fabiano Caixeta Duarte
> <fcd.listas@...> escreveu
>
> >
> > jrsreis escreveu:
> > >
> > >
> > > Olá Pessoal,
> > >
> > > Estou tentando criar um script com função, mas não estou
> > > conseguindo, nem passar o valor para a função. E gostaria também de
> > > saber se há como testar se um valor digitado é um número negativo ou
> > > positivo. Se o usuário teclar Enter sem digitar nada o programa teria
> > > que trar isso.
> > > Abaixo segue o que estou tentando fazer. Se puderem me ajudar, eu
> > > agradeço.
> > >
> > > #!/bin/bash
> > > # Script para comparar dois números
> > >
> > > clear
> > >
> > > function frecebervalor
> > > {
> > > local FLAG=false
> > > while $FLAG == "false"
> > > do
> > > read N1
> > > if [ -z $N1 ] then
> > > FLAG=true
> > > fi
> > >
> > > done
> > > }
> > >
> > > echo "Entre com o primeiro número:"
> > > frecebervalor N1
> > >
> > > echo "Entre com o segundo número:"
> > > read N2
> > >
> > > clear
> > >
> > > if [ $N1 -eq $N2 ] ; then
> > > echo "O número $N1 é igual a $N2!"
> > > elif [ $N1 -gt $N2 ] ; then
> > > echo "O número $N1 é maior do que $N2!"
> > > else
> > > echo "O número $N2 é maior do que $N1!"
> > > fi
> > >
> >
> > Você pode utilizar expressões regulares.
> > [[ "$A" =~ ^[0-9]+$ ]] && echo ok
> >
> > Outra coisa: você não precisa de uma função pra ler um valor da entrada
> > padrão. O comando read faz isto pra você.
> >
> > Fabiano.
> >
>
> Olá Fabiano,
>
> Obrigado pela ajuda, eu gostaria de incluir a função somente
> para eu entender como funciona, pois estou começando a entrar de
> cabeça em shell script. Há possibilidade de me ajudar ? Como faria
> para chamar a função ? Eu tenho que ler a entrada de dentro da função
> ? Ou no momento da chamada da função ?
>
> Júnior.
>
>  
>



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



reply via email to

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