Dúvida Shell script (Números entre)

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

Antonio jose
antoniojose12

(usa Fedora)

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?


  


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

Mauriciodez
Mauriciodez

(usa Debian)

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)

Marcelo Oliver
msoliver

(usa Debian)

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)

Antonio jose
antoniojose12

(usa Fedora)

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)

Perfil removido
removido

(usa Nenhuma)

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)

Mauriciodez
Mauriciodez

(usa Debian)

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)

Mauriciodez
Mauriciodez

(usa Debian)

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)

Mauriciodez
Mauriciodez

(usa Debian)

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)

Rodrigo Namba Dake
shundake

(usa Arch Linux)

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)

Marcelo Oliver
msoliver

(usa Debian)

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








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts