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

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

Re: [shell-script] duas condições com um if


From: denis costa
Subject: Re: [shell-script] duas condições com um if
Date: Tue, 23 Dec 2008 04:07:03 -0800 (PST)

Muito Obrigado Wnder Wildner!!!!!

--- Em ter, 23/12/08, Wander Wildner <address@hidden> escreveu:
De: Wander Wildner <address@hidden>
Assunto: Re: [shell-script] duas condições com um if
Para: address@hidden
Data: Terça-feira, 23 de Dezembro de 2008, 9:44










    
            Bom dia Senhores.



Na realidade basta o Denis ler a variável da seguinte forma:



*read nota*



Ou seja, sem o "$". Não precisa iniciar a variável.



Ficaria de seguinte forma:



#!/bin/bash

#-------Variaveis usadas

cont=1



#-------Chaves usadas

verificanota= 0



#   Leitura das notas dos alunos

while (($cont < 5)); do

    echo "Digite o valor da $cont° nota:"

    read nota

    #   Verificar se a nota Ã(c)alida



if (( $nota < 0 || $nota > 10 )); then

        verificanota= 1

        echo

        echo "Valor invádo como nota!"

        echo

        #   Lêovamente as notas caso

        # as notas tenham sido recebidas como

        # invádas.

....

....

....



2008/12/23 jimmy <ronaldo_tgz@ yahoo.com. br>



>   saudações denis,

>

>

> On Mon, Dec 22, 2008 at 04:06:17PM -0800, denis costa wrote:

> > aparece essa mensagem:

> >

> > ../media.sh: line 47: ((: < 0 ||  > 10: erro de sintaxe: operando

> esperado (error token is "< 0 ||  > 10")

> esse erro ocorreu porque a variável nota não foi inicializada,

> quando o shell expandiu os parmetros para fazer a comparação ele acabou

> por comparar nada com alguma coisa.

>

> coloque no início do seu script:

>

> nota=0

>

> por exemplo;

> ou force um valor default para variável quando esta estiver nula:

>

> if ((${nota:-0} < 0 || ${nota:-0} > 10)); then

> ...

> fi

>

>

> >

> >

> > --- Em seg, 22/12/08, denis costa <deniscostadsc@ yahoo.com. 
> > br<deniscostadsc% 40yahoo.com. br>>

> escreveu:

> > De: denis costa <deniscostadsc@ yahoo.com. br<deniscostadsc% 40yahoo.com. 
> > br>

> >

> > Assunto: Re: [shell-script] duas condições com um if

> > Para: shell-script@ yahoogrupos. com.br<shell-script% 40yahoogrupos. com.br>

> > Data: Segunda-feira, 22 de Dezembro de 2008, 21:25

> >

> > modifiquei e não deu certo tô mandado aqui o códido script.

> > esse script tem teor didático pra eu me habituar com essa linguagem, pois

> não conheço a sintaxe 100% do Shell!

> >

> > #!/bin/bash

> > #-------Variaveis usadas

> > cont=1

> >

> > #-------Chaves usadas

> > verificanota= 0

> >

> > #   Leitura das notas dos alunos

> > while (($cont < 5)); do

> >     echo "Digite o valor da $cont° nota:"

> >     read $nota

> >     #   Verificar se a nota é valida

> >     if (($nota < 0 || $nota > 10)); then

> >         verificanota= 1

> >         echo

> >         echo "Valor inválido como nota!"

> >

> >     echo

> >         #   Lê novamente as notas caso

> >         # as notas tenham sido recebidas como

> >         # inválidas.

> >         while (($verificanota == 1))

> >         do

> >             echo "Digite uma nota válida:"

> >             read $nota

> >             if (($nota >= 0 && $nota <= 10));then

> >                 verificanota= 0

> >             fi

> >         done

> >         exit 0

> >     fi

> >     total=$((total +

> > nota))

> >     cont=$((cont + 1))

> > done

> > #   Calculo da média

> > media=$((total/ 4))

> > echo

> > echo "A média do aluno é: $media"

> > echo

> > if (($media >= 7)); then

> >     echo "Aluno Aprovado"

> > else

> >     echo "Aluno de recuperação"

> > fi

> > echo

> > echo "Digite a nota da Prova de Recuperação:"

> > read $nota

> > if (($nota < 0 || $nota > 10 )); then

> >     verificanota= 1

> >     echo

> >     echo "Valor inválido como nota!"

> >     echo

> >     #   Lê novamente as notas caso a nota da recuperação

> >     # tenham sido recebidas como inválidas.

> >     while (($verificanota == 1));     do

> >         echo "Digite uma nota válida:"

> >         read

> > $nota

> >         if (($nota >= 0 && $nota <= 10)); then

> >             verificanota= 0

> >         fi

> >     done

> >     if (($nota >= 7)); then

> >         echo "Aluno Aprovado"

> >     else

> >         echo "Aluno Reprovado"

> >     fi

> > fi

> >

> >

> >

> >

> >

> >

> > --- Em dom, 21/12/08, Julio C. Neves <julio.neves@ gmail.com<julio.neves% 
> > 40gmail.com> >

> escreveu:

> > De: Julio C. Neves <julio.neves@ gmail.com <julio.neves% 40gmail.com> >

> > Assunto: Re: [shell-script] duas condições com um if

> > Para: shell-script@ yahoogrupos. com.br<shell-script% 40yahoogrupos. com.br>

> > Data: Domingo, 21 de Dezembro de 2008, 22:16

> >

> >

> >

> >

> >

> >

> >

> >

> >

> >

> >

> > Fala Denis,

> >

> > faça assim:

> >

> >

> >

> > if (($nota <= 0 || $nota >= 10)); then ....

> >

> > ou então:

> >

> > if [ $nota -le 0 -o $nota -ge 10 ]; then ...

> >

> >

> >

> > A primeira é mais veloz pq é bash puro.

> >

> > --

> >

> > Abração,

> >

> > Julio

> >

> > Cursos de Shell e Zenity nos finais de semana:

> >

> > - Em SP ligue (11) 2125-4747;

> >

> > - Em DF ligue (61) 3223-3000;

> >

> > - Turmas fechadas em outras cidades ligue (21) 8112-9988

> >

> >

> >

> > 2008/12/21 denis costa <deniscostadsc@ yahoo.com. br>

> >

> >

> >

> > > como poderia fazer para testar duas condições em um if, póis estou

> >

> > > fazendo um programinha que necessita de uma verificação se um número

> esta em

> >

> > > uma faixa de números entre 0 e 10 e quando está fora preciso trata-lós,

> logo

> >

> > > pensei:

> >

> > >

> >

> > > if ($nota <= 0) || ($nota >= 10); then

> >

> > > comandos

> >

> > > fi

> >

> > >

> >

> > > mas se esse if lê 8 caiu nos comando dele, não tô entendo o por que

> >

> > >

> >

> > > Obrigado a quem possa ajudar

> >

> >

> > --

> >

> > Abração,

> >

> > Julio

> >

> > Cursos de Shell e Zenity nos finais de semana:

> >

> > - Em SP ligue (11) 2125-4747;

> >

> > - Em DF ligue (61) 3223-3000;

> >

> > - Turmas fechadas em outras cidades ligue (21) 8112-9988

> >

> > ------------ --------- --------- ------

>  

>



-- 

Att,

Thiago Guedes Pereira

84687892



[As partes desta mensagem que não continham texto foram removidas]




      

    
    
        
         
        
        








        


        
        


      Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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