Ajuda shell script [RESOLVIDO]

1. Ajuda shell script [RESOLVIDO]

Caio Alexander
caioc2

(usa Kali)

Enviado em 09/09/2011 - 15:53h

Bom galera eu sou novo no shell script e estou tentando dar uma adiantada na matéria pra quando chegar na mesma eu já ter uma boa noção pra não ficar perdido. Bom gostaria de saber se esse script ta certo para está questão, como estou começando se der para corrigir meus erros da forma mais simples que eu possa entender ficaria melhor.

07) Faça um Programa que leia três números e mostre o maior e o menor deles.
#!bin/bash
clear
maior=0
menor=1
echo " Digite o primeiro valor: "
read primeiro
[ $primeiro -gt $maior ] -e [ $primeiro -lt $menor ] && maior=$primeiro -e && menor=$primeiro
echo " Digite o segundo valor: "
read segundo
[ $segundo -gt $maior ] -e [ $segundo -lt $menor ] && maior=$segundo -e && menor=$segundo
echo " Digite o terceiro valor: "
read terceuri
[ $terceiro -gt $maior ] -e [$terceiro -lt $menor ] && maior=$terceiro -e && menor=$terceiro
echo " O maior valor é: $maior e o menor valor é: $menor



  


2. Re: Ajuda shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/09/2011 - 15:59h

Não testei, mas já dar pra ver que a lógica está errada.

Para testar o maior número, já discutimos no tópico anterior.

Agora o menor, você tem que começar essa variável com um número auto, para que na comparação com um valor digitado pelo usuário qualquer valor digitado vai ser menor que o mesmo.

O resto é igual discutimos anteriormente, trocando apenas o gt pelo lt (como você fez acima)

Outra coisa, prefira separar as comparações, entre maior e menor, fica mais legível e vai ter mais sucesso no resultado :-)

Abraços


3. Re: Ajuda shell script [RESOLVIDO]

Caio Alexander
caioc2

(usa Kali)

Enviado em 09/09/2011 - 16:05h

Não entendi na parte de separar as comparações entre maior e menor ;x desculpe é que tenho pouco tempo em shell script e ainda não entrei nessa matéria *-*


4. Re: Ajuda shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/09/2011 - 16:11h

Assim, está mais relacionado à lógica de programação mesmo.

Veja:


MostrarNaTela "Digite o valor 1"
leia valor1

MostrarNaTela "Digite o valor 2"
leia valor2

MostrarNaTela "Digite o valor 3"
leia valor3

# comparações

maior=valor1

Se valor2 > maior então
maior=valor2

Se valor3 > maior então
maior=valor3

menor=valor1

Se valor2 < menor então
menor=valor2

Se valor3 < menor então
menor=valor3

----------------
Acho que só isso bastaria, falta apenas adaptar à linguagem que você vai usar :-)









5. Re: Ajuda shell script [RESOLVIDO]

Caio Alexander
caioc2

(usa Kali)

Enviado em 09/09/2011 - 16:21h

hmm obrigado, consegui entender. Neste caso, está correto a logica ? eu estou sem linux pra testar =T

08) Faça um programa que pergunte o preço de três produtos e informe qual produto você deve comprar, sabendo que a decisão é sempre pelo mais barato.

#!bin/bash
clear
menor=50
echo " Informe o primeiro preço: "
read primeiro
[ $primeiro -lt $menor ] && menor=$primeiro
echo " Informe o segundo preço: "
read segundo
[ $segundo -lt $menor ] && menor=$segundo
echo " Informe o terceiro preco: "
read terceiro
[ $teceiro -lt $menor ] && menor=$terceiro
echo " Você deve comprar o produto $menor "




6. Re: Ajuda shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/09/2011 - 16:32h

Isso mesmo, já está dando certo (só concertar o erro na digitação :-))

Agora se quiser fazer expressões usando valores com ponto flutuante use a o bc, uma biblioteca de cálculos :-), use o man e veja as diversas opções da mesma, exemplo:

echo "0.1 < 1.5" | bc

Obs.: o resultado do bc difere do padrão Unix :-), caso a expressão acima for verdadeira a variável de retorno $? vai conter o valor 1, se for falso, vai conter 0.

Abraços


7. Re: Ajuda shell script [RESOLVIDO]

Caio Alexander
caioc2

(usa Kali)

Enviado em 09/09/2011 - 16:42h

eu vou começar com esses "V ou F" na próxima aula^^ .
uma dúvida:
se eu colocar,
"if [ $valor2 -gt $maior ] && maior=valor2"

eu preciso colocar em baixo o "then" ou somente o "else" e ja ir pro prox if?
explo:
"if [ $valor2 -gt $maior ] && maior=valor2"
then
else



8. Re: Ajuda shell script [RESOLVIDO]

Caio Alexander
caioc2

(usa Kali)

Enviado em 09/09/2011 - 16:56h

bom eu fiz o exercício 08 de uma outra forma, não coloquei na variável um número, coloquei o preco1.

08) Faça um programa que pergunte o preço de três produtos e informe qual produto você deve comprar, sabendo que a decisão é sempre pelo mais barato.

#!bin/bash
clear
echo -n " Infrome o primeiro preço: "
read preco1
echo -n " Informe o segundo preço: "
read preco2
echo -n " Informe o terçeiro preço: "
read preco3
menor=preco1

if [ $preco2 -lt $menor ] && menor=preco2
else
if [ $preco3 -lt $menor ] && menor=preco3
echo " Voce deve comprar o produto que custa $menor "
fi
fi

pode ser dessa forma??


9. Re: Ajuda shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/09/2011 - 17:07h

Por isso que falei que o problema é mais de lógica mesmo, você construiu bem o shell script, mas o problema é lógica, do jeito que fez acima tem erro, veja:

if [ $preco2 -lt $menor ] && menor=preco2
else
if [ $preco3 -lt $menor ] && menor=preco3
echo " Voce deve comprar o produto que custa $menor "
fi
fi

Pense comigo, pode acontecer do preco2 ser menor que o preco1, então seu primeiro if vai dar certo e não vai entrar no segundo, e não entrando no segundo o preco3 não será testado, e pode ser que o mesmo seja menor que o preco2 :-)

É só lógica mesmo, por isso postei um algoritmo genérico no início :-).

Coloque um if para cada ai já dá certo retire o else.

Obs.: Lógica de Programação é a matéria mais importante de todos os cursos, pois a linguagem em si, aprende-se com os livros :-)

ABraços


10. Re: Ajuda shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/09/2011 - 17:14h

Outra coisa, o shell script tem alguns erros :-)

if [ $preco2 -lt $menor ] && menor=preco2
else
if [ $preco3 -lt $menor ] && menor=preco3
echo " Voce deve comprar o produto que custa $menor "
fi
fi

o [... ] é um atalho para "test expressao" e o "test expressao" pode ser usado no if.

o if e construído basicamente com:

if [ ..... ]; then



fi

No seu caso faltou o ; then e daria erro na execução.

Obs.: Veja alguns scripts da sessão de scripts do VOl tem bastante conteúdo e ajuda no aprendizado ;-)

Abraços




11. Re: Ajuda shell script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/09/2011 - 17:14h









#!/bin/bash

echo "Preço do produto 1: "
read produto1

echo "Preço do produto 2: "
read produto2

echo "Preço do produto 3: "
read produto3

menor=$produto1

if [ $produto2 -lt $menor ]; then
menor=$produto2
fi

if [ $produto3 -lt $menor ]; then
menor=$produto3
fi

echo "Voce deve comprar o produto que custa $menor"


12. Re: Ajuda shell script [RESOLVIDO]

Caio Alexander
caioc2

(usa Kali)

Enviado em 09/09/2011 - 17:15h

Entendi então é melhor eu deixar na variável um número mesmo, mas tem como eu deixar um dos preços como variável igual eu tentei ??



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts