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: jimmy
Subject: Re: [shell-script] duas condições com um if
Date: Tue, 23 Dec 2008 08:58:25 -0200
User-agent: Mutt/1.4.2.3i

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 <address@hidden> escreveu:
> De: denis costa <address@hidden>
> Assunto: Re: [shell-script] duas condições com um if
> Para: address@hidden
> 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 <address@hidden> escreveu:
> De: Julio C. Neves <address@hidden>
> Assunto: Re: [shell-script] duas condições com um if
> Para: address@hidden
> 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
> 
> ------------------------------------


reply via email to

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