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 <deniscosta...@yahoo.com.br> escreveu: > De: denis costa <deniscosta...@yahoo.com.br> > Assunto: Re: [shell-script] duas condições com um if > Para: shell-script@yahoogrupos.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.ne...@gmail.com> escreveu: > De: Julio C. Neves <julio.ne...@gmail.com> > Assunto: Re: [shell-script] duas condições com um if > Para: shell-script@yahoogrupos.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 > > ------------------------------------