Problema em script nota [RESOLVIDO]

1. Problema em script nota [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 01/07/2010 - 23:18h

Pessoal, estou tentando estudar shell script, mas algumas coisas ainda tenho duvida, gostaria de uma ajuda neste script que criei para calcular duas notas de um aluno e verificar se ele foi aprovado:

Ta ai o script:

#!/bin/bash
echo "Digite a primeria nota"
read VAR
echo "Digite a segunda nota"
read VAR2
( $VAR + $VAR2 ) / 2 = MEDIA
if [ $MEDIA -ge 7 ]; then
echo "Aluno Aprovado"
else
echo "Aluno Reprovado"
fi

Quando rodo ele, olha só o que acontece "6: Syntax error: word unexpected"


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/07/2010 - 23:58h

está aki =)

==============================================

#!/bin/bash
echo "Digite a primeria nota" ; read VAR
echo "Digite a segunda nota" ; read VAR2
MEDIA=$((( $VAR + $VAR2 )/2))
if [ $MEDIA -ge 7 ]; then
echo "Aluno Aprovado"
else
echo "Aluno Reprovado"
fi

=======================================

qualquer coisa é soh perguntar

3. Re: Problema em script nota [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 02/07/2010 - 01:36h

Para realizar operações matemáticas (somente com inteiros!) no shell, você deverá utilizar uma dessas notações:

let var="operação_desejada"
var=$((operação_desejada)) ou (( var = operação_desejada ))
var=$[operação_desejada] *Em desuso.


4. Re: Problema em script nota [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 02/07/2010 - 08:20h

@SMarcell, tb pode ser feito com o comando expr, não é?

expr 2 + 2
expr 4 \* 8
expr 10 \/ 2
expr \( $VAR + $VAR2 \) \/ 2 (neste caso).


5. Re: Problema em script nota [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 02/07/2010 - 23:28h

vlw, vou fazer os testes!


6. Re: Problema em script nota [RESOLVIDO]

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 03/07/2010 - 00:48h

vc pode usar o bc ele calcula numeros quebrados assim ó:
.
.
.
.
.

#!/bin/bash
echo -ne " \e[35m Digite a primeira nota:\e[0m "
read nota1
echo -ne " \e[35m Digite a segunda nota:\e[0m "
read nota2
resposta=`echo " $nota1 + $nota2 / 2 " | bc`
if [ $resposta -ge 7 ];then
echo -e "\e[32m passou \e[0m"
echo -e "nota: \e[33m `echo " scale=1; $nota1 + $nota2 / 2 " | bc` \e[0m"
else
echo -e "\e[31m reprovou \e[0m"
echo -e "nota: \e[33m `echo " scale=1; $nota1 + $nota2 / 2 " | bc` \e[0m"
fi

vê se serve...

---
(°>
//\
V_/_
Free, Powerful and safe
GNU Slackware Linux


7. Re: Problema em script nota [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 03/07/2010 - 01:17h

@SMarcell, tb pode ser feito com o comando expr, não é?

Verdade... só não o mencionei por ele não ser uma instrução nativa do bash (assim como bc e dc).


8. Re: Problema em script nota [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 05/07/2010 - 23:21h

douglasfim, deu certinho o negocio, era isso que eu queria!!!
hudyfx, eu utilizei o seu script e funcionou mais ou menos, em uma olhada.

# sh teste6.sh
-ne \e[35m Digite a primeira nota:\e[0m
7
-ne \e[35m Digite a segunda nota:\e[0m
9
-e \e[32m passou \e[0m
-e nota: \e[33m 11.5 \e[0m
root@lap:/home/fabricio/scripts#

OBS: Pode ser que demore para responder os tópicos, mas sempre respondo e coloco-os como resolvidos. ;D



9. Re: Problema em script nota [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 05/07/2010 - 23:24h

Amigo douglasfim, uma ultima coisa, por que esta linha tem tanto parenteses?

MEDIA=$((( $VAR + $VAR2 )/2))

Obs: não liguem, quem esta começando é assim mesmo! ;)


10. Re: Problema em script nota [RESOLVIDO]

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 05/07/2010 - 23:56h

Na verdade o "(( ))" joga dentro da variável uma expressão, e essa expressão segue as regras de precedências da matemáticas...
Por exemplo:
Se pegarmos uma lápis eu um papel para faze a mão a equação 6 + 4 / 2, primeiro dividiríamos 4 por 2 e por fim somaríamos 5. Agora, se quiséssemos somar 6 + 4 e depois dividir por 2 a representação seria:
( 6 + 4 ) / 2
No Shell não é diferente, o sinal $(()) indica uma variável que recebe uma excreção, para compreender melhor faça uns testes no Shell exemplo:
( 6 + 4 ) / 2
echo $((( 6 + 4 ) / 2))
(6 + 4 ) / 2 * (12 - 4)
echo $(((6 + 4 ) / 2 * (12 - 4)))

faloww...
---
(°>
//\
V_/_
Free, Powerful and safe
GNU Slackware Linux


11. Re: Problema em script nota [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 06/07/2010 - 01:03h

hudyfx, gostei do exemplo, mais ainda não entendo por que são 3 parentes.
não poderia ser desta forma:

MEDIA=$(( $VAR + $VAR2 )/2) <------????


12. Re: Problema em script nota [RESOLVIDO]

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 06/07/2010 - 16:17h

Ok parece que fugi do foco, pois bem...
No Shell o () diz que iremos executar um comando, execute no shell o seguinte:
root@darlstar:~# (ls)
Será executado o comando ls ( até aqui sem novidade...)
agora se eu quiser gravar o resultado em uma variável:
root@darlstar:~# var=$(ls)
root@darlstar:~# echo $var
Teríamos na variável a saída do ls, o ls nada mais é do que um programa como qualquer outro comando do sistema, no caso das expressões matemáticas () dentro de () será considerado um programa de calculo, que retorna números inteiros, no shell script o parênteses tem muitas utilidades, vc pode por um script inteiro dentro de uma variável, exemplo:
root@darlstar:~# var=$(
for (( i=0; i <= 10; i++ ));do
echo $i
done
)
root@darlstar:~# echo $var
0 1 2 3 4 5 6 7 8 9 10
deu pra entender agora?
Faloww
--
(°>
//\
V_/_
Free, Powerful and safe
GNU Slackware Linux




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts