Pular para o conteúdo

Dúvida Shell script (Números entre)

Responder tópico
  • Denunciar
  • Indicar

1. Dúvida Shell script (Números entre)

Enviado em 22/05/2017 - 20:35h

Olá amigos, estou estudando shell script, bom eu estou fazendo um exercicio que pede para o usario responder uma serie de coisas e vai somar pontos no final, como aquela dieta de pontos sabe.
Até ai tudo bem, o script está feitinho, porem no final eu não sei o que usar para ou seja de 20 a 31 é uma resposta, de 32 a 44 é outra, de 45 a 50 é outra.
O que eu poderia usar? eu não sei se precisa usar algum sinal e tals, alguem pod eme ajudar?

Responder tópico

2. Re: Dúvida Shell script (Números entre)

Enviado em 22/05/2017 - 21:48h

antoniojose12 escreveu:

Olá amigos, estou estudando shell script, bom eu estou fazendo um exercicio que pede para o usario responder uma serie de coisas e vai somar pontos no final, como aquela dieta de pontos sabe.
Até ai tudo bem, o script está feitinho, porem no final eu não sei o que usar para ou seja de 20 a 31 é uma resposta, de 32 a 44 é outra, de 45 a 50 é outra.
O que eu poderia usar? eu não sei se precisa usar algum sinal e tals, alguem pod eme ajudar?
vc não precisa de "numeros entre" ... basta fazer IF normal

se "pontos" < 32 ... uma resposta
se "pontos" < 45 ... outra resposta

no caso, mesmo o numero sendo menor q 32 e tb menor que 45 ( obviamente ) ... EX: 20 ...a condicional vai parar no 1° IF e não vai testar o 2° sacou ???
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

3. Re: Dúvida Shell script (Números entre)

Enviado em 22/05/2017 - 22:26h

antoniojose12 escreveu:

Olá amigos, estou estudando shell script, bom eu estou fazendo um exercicio que pede para o usario responder uma serie de coisas e vai somar pontos no final, como aquela dieta de pontos sabe.
Até ai tudo bem, o script está feitinho, porem no final eu não sei o que usar para ou seja de 20 a 31 é uma resposta, de 32 a 44 é outra, de 45 a 50 é outra.
O que eu poderia usar? eu não sei se precisa usar algum sinal e tals, alguem pod eme ajudar?
Antonio, boa noite.
Segue:
((RESP >= 20 && RESP <= 31)) && echo "MENSAGEM01"
((RESP >= 32 && RESP <= 44)) && echo "MENSAGEM02"
.
.
.

Outra opção é usar o case...

Dica para seus estudos:
man bash >> BASH.txt

att.: mso



4. Re: Dúvida Shell script (Números entre)

Enviado em 22/05/2017 - 22:57h

Ta dando erro o script não procede, alguem pode me dar uma força?
eu estou estudando shell


soma=$(( $n1 + $n2 + $n3 + $n4 + $n5 + $n6 + $n7 + $n8 + $n9 + $n10 + $n11 + $n12 + $n13 + $n14 + $n15 + $n16 + $n17 + $n18 + $n19 + $n20 ))

if [ $soma > 20 ]
then
clear
echo "Mensagem1"

else [ $soma > 45 ]
then
clear
echo "Mensagem2"


elif [ $soma > 55 ]
then
clear
echo "Mensagem3"


elif [ $soma < 67 ]
then
clear
echo "Mensagem4"
fi

5. Re: Dúvida Shell script (Números entre)

Enviado em 22/05/2017 - 23:06h

antoniojose12 escreveu:

Ta dando erro o script não procede, alguem pode me dar uma força?
eu estou estudando shell


soma=$(( $n1 + $n2 + $n3 + $n4 + $n5 + $n6 + $n7 + $n8 + $n9 + $n10 + $n11 + $n12 + $n13 + $n14 + $n15 + $n16 + $n17 + $n18 + $n19 + $n20 ))

if [ $soma > 20 ]
then
clear
echo "Mensagem1"

else [ $soma > 45 ]
then
clear
echo "Mensagem2"


elif [ $soma > 55 ]
then
clear
echo "Mensagem3"


elif [ $soma < 67 ]
then
clear
echo "Mensagem4"
fi
Experimente usar array com FOR para somar ou tire os $ dos Ns.

...=$((n1+n2+n3...))

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

6. Re: Dúvida Shell script (Números entre)

Enviado em 23/05/2017 - 01:13h

V aí se te da uma luz
#!/bin/bash
n1=6
n2=1
n3=4
n4=3
X=$(($n1 + $n2 + $n3 + $n4))

if [ $X -lt 5 ] ; then
echo "$X é menor que 5"
elif [ $X -lt 10 ] ; then
echo "$X é menor que 10"
elif [ $X -lt 15 ] ; then
echo "$X é menor que 15"
else
echo "$X é maior ou igual que 15"
fi
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

7. Re: Dúvida Shell script (Números entre)

Enviado em 23/05/2017 - 01:16h

Comparação inteira
-eq ..... Igual
-ne ..... Diferente
-gt ..... Maior que
-ge ..... Maior ou igual a
-lt ..... Menor que
-le ..... Menor ou igual a

Comparação de strings
= ..... Igual
!= ..... Diferente
< ..... Menor que
> ..... Maior que
-z ..... String nula, ou seja, tamanho = 0
-n ..... String não é nula

_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

8. Re: Dúvida Shell script (Números entre)

Enviado em 23/05/2017 - 01:26h

Entendeu aí a diferença ???
quando vc verifica uma variavel ( mesmo q ela receba um numero EX: "x=10") vc vai comparar string .. quando vc tem uma equação matemática vc passa a ter inteiros
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

9. Re: Dúvida Shell script (Números entre)

Enviado em 23/05/2017 - 08:29h

antoniojose12 escreveu:

Ta dando erro o script não procede, alguem pode me dar uma força?
eu estou estudando shell


soma=$(( $n1 + $n2 + $n3 + $n4 + $n5 + $n6 + $n7 + $n8 + $n9 + $n10 + $n11 + $n12 + $n13 + $n14 + $n15 + $n16 + $n17 + $n18 + $n19 + $n20 ))

if [ $soma > 20 ]
then
clear
echo "Mensagem1"

else [ $soma > 45 ]
then
clear
echo "Mensagem2"


elif [ $soma > 55 ]
then
clear
echo "Mensagem3"


elif [ $soma < 67 ]
then
clear
echo "Mensagem4"
fi
Talvez esteja dando erro porque o else está antes do elif...
if ... then
elif ... then
elif ... then
else
fi
veja:https://www.tutorialspoint.com/unix/if-elif-statement.htm

10. Re: Dúvida Shell script (Números entre)

Enviado em 23/05/2017 - 16:34h

antoniojose12 escreveu:

Ta dando erro o script não procede, alguem pode me dar uma força?
eu estou estudando shell


soma=$(( $n1 + $n2 + $n3 + $n4 + $n5 + $n6 + $n7 + $n8 + $n9 + $n10 + $n11 + $n12 + $n13 + $n14 + $n15 + $n16 + $n17 + $n18 + $n19 + $n20 ))

if [ $soma > 20 ]
then
clear
echo "Mensagem1"

else [ $soma > 45 ]
then
clear
echo "Mensagem2"


elif [ $soma > 55 ]
then
clear
echo "Mensagem3"


elif [ $soma < 67 ]
then
clear
echo "Mensagem4"
fi
Boa tarde antonio.
[ $soma < 67 ] #ERRADO
[ $soma -lt 67 ] #CERTO
Ou
(($soma < 67)) #CERTO
E, como já foi "dito", o condicional está ERRADO.

mso


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder