Tabuada simples - ShellScript

Infraestrutura

05/05/2015

Estou tentando fazer uma tabuada simples em shellscript, a mesma deve solicitar um numero e com ele fazer a tabuada, sendo que deve ser mostrado a soma e multiplicação.

O que eu consegui fazer:




#!/bin/bash

clear
function menu() {
echo "====================="
echo "  **   TABUADA    ** "
echo "====================="

echo "====================="
echo "Opções:"
echo "1) Para soma"
echo "2) Para multiplicação"
echo "3) Para sair"
read -p "Qual operação: " op

case $op in
 1) soma ;;
 2) mult ;;
 3) sair ;;
 *) "Opção "
    clear ;
    menu ;;
    esac
 }
 
function entrada () {
  echo "Informe o numero"
  read num
}


function soma() {
  for i in $(seq 0 10)
  do
   echo "soma: $i + $i"
  done
}

 menu





Alguem pode me dar uma ajudar?
Roniere Almeida

Roniere Almeida

Curtidas 0

Respostas

Roniere Almeida

Roniere Almeida

05/05/2015

Se alguem puder dar uma olhada e conhecerem um pouco sobre o Shellscript.
GOSTEI 0
Jothaz

Jothaz

05/05/2015

Não tenho a pretensão de me intrometer em seu aprendizado, porém acredito que o uso do Shel Script seria mais recomendado para administração, instalação e configuração da sua distribuição do sistema operacional

Não que não seja possível criar um script para calculadora, só acredito que não teria um uso pratico.
Pelo que vejo nos seus posts sua intenção e se transforma em um profissional em Linux, então seria mais produtivo se concentrar em criar scripts que realmente possam fazer a diferença no ambiente corporativo. Assim caso você participe de algum processo de seleção estaria capacitado.

Algumas sugestões para criação de scripts:

1 - Formatar de uma vez várias partições do HD.
2 - Descobrir o sistema de arquivos que uma determinada partição do sistema está formatada, de forma a usar a informação mais adiante no script.
3 - Listar os usuários cadastrados no sistema.
4 - Verificar filesystem montados.
5 - Particionador do sistema.
6 - Montar/Desmontar FLOPPY.
7 - Montar/Desmontar CDROM.
8 - Para Sair.
9 - Identificar usuários que acessam sites "suspeitos" e avisá-los da política de empresa acerca do uso apropriado da Internet com recursos da empresa.
10 - Redução em lote do tamanho das imagens localizadas em um diretório e grava a imagem reduzida em um outro diretório.
11 - Cumprimentar o usuário no logado.

Se por acaso você não concordar favor desconsiderar as sugestões, pois se trata somente de minha visão pessoal e não quer dizer que esteja certa.
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Eu te entendo perfeitamente Jothaz e queria que realmente fosse mais direcionado, meus estudos! hehehe, mas exercicios, são exercicios...cobrados ainda!!!
Mas o que você escreveu é realmente o que desejo!
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Jothaz tem razão mas vi a situação é ter que fazer, sei como é.

Posso tentar te ajudar, mais tarde vejo com calma seu código.
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Se puder me ajudar eu agradeço!
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Acho que hoje a noite vou tentar ver seu código direito.
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Acho que hoje a noite vou tentar ver seu código direito.
GOSTEI 0
Jothaz

Jothaz

05/05/2015

Eu te entendo perfeitamente Jothaz e queria que realmente fosse mais direcionado, meus estudos! hehehe, mas exercicios, são exercicios...cobrados ainda!!!
Mas o que você escreveu é realmente o que desejo!


Foi mal, não sabia que era exercício!

Não tenho Linux instalado a mão e não sou muito bom em shell, mas faria algo bem simples uma solução "donkey". kkkk

echo -n "Informe Primeiro numero: "; read valor1
echo -n "Informe a operação  "; read operacao
echo -n "Informe  Segundo numero: "; read valor2

if [ "$operacao" = '-' ]; then
tipo=Subtração
elif [ "$operacao" = '+' ]; then
tipo=Soma
elif [ "$operacao" = '*' ]; then
tipo=Multiplicação
elif [ "$operacao" = '/' ]; then
tipo=Divisão
else
echo "Operação inválida!"
exit 1
fi

echo -n "O resultado da operação: $tipo é = "; echo "$(($valor1 $operacao $valor2))"


Sei que esta horroroso e simplista e certamente contém erro de sintaxe, mas talvez lhe inspire.

Caso não lhe atenda favor desonsiderar e sinceramente esta é a ajuda que posso lhe dar.
GOSTEI 0
Randrade

Randrade

05/05/2015

Não possuo muito conhecimento em shell. porém, encontrei um post aqui que explica bem, e possui até um exemplo de tabuada estática, que pode lhe ajudar.

Introdução ao shell script
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Jothaz, não esquenta, eu nem informei sobre isso.
Seu código, eu testei e apareceu alguns erros, porem, estou vendo o que pode ser. Mas mesmo assim obrigado!!!

[img]http://arquivo.devmedia.com.br/forum/imagem/273948-20150506-201427.png[/img]
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Tentando fazer Roniere!
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Não possuo muito conhecimento em shell. porém, encontrei um post aqui que explica bem, e possui até um exemplo de tabuada estática, que pode lhe ajudar.

Introdução ao shell script


Nunca tinha visto esse artigo! Valeu!

Ei Edvaldo, fica tranquilo e sem pressa, estou tentando resolver o meu e o do Jothaz.
GOSTEI 0
Jothaz

Jothaz

05/05/2015

Jothaz, não esquenta, eu nem informei sobre isso.
Seu código, eu testei e apareceu alguns erros, porem, estou vendo o que pode ser. Mas mesmo assim obrigado!!!

[img]http://arquivo.devmedia.com.br/forum/imagem/273948-20150506-201427.png[/img]


Pois é tem muitos anos que não uso Shell Script, então era de se esperar os erro, ainda mais que não testei.

Olha tente simplificar e depois vá refina do faça assim:

echo -n "Informe Primeiro numero: "; read valor1
echo -n "Informe a operação  "; read operacao
echo -n "Informe  Segundo numero: "; read valor2
 
 echo "$(($valor1 $operacao $valor2))"



Se funcionar vá melhorando.

A ideia é lhe passar a lógica básica.
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Firmeza!!! Tambem tentando fazer funcionar depois melhorar!
GOSTEI 0
Jothaz

Jothaz

05/05/2015

Olha fiz um teste em verificador de sintaxe shell online e passou.

Usei o script abaixo.

echo -n "Informe Primeiro numero: "; read valor1
echo -n "Informe a operação  "; read operacao
echo -n "Informe  Segundo numero: "; read valor2
 
echo -n "resultado: ";echo "$valor1$operacao$valor2" | bc
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Demorou!!! mas saiu, segui a ideia do seu exemplo.


#!/bin/bash

clear
function menu() {
echo "====================="
echo "  **   TABUADA    ** "
echo "====================="

echo "====================="
echo "Opções:"
echo "1) Para soma"
echo "2) Para multiplicação"
echo "3) Para sair"
read -p "Qual operação: " op

case $op in
 1) soma ;;
 2) mult ;;
 3) exit ;;
    esac
 }
 
function entrada () {
  echo "Informe o numero"
  read num
}

function soma() {
  echo "Informe o numero para somar"
  read num    
  for i in $(seq 0 10)
  do
    echo "soma: $num + $i = $(( $num + $i )) " 
  done
  
}

 menu

GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Achei legal, só não entendi como funciona, coloquei para rodar e fui direcionado para outra pagina e...não entendi! hehehe

Vou testar Edvaldo, mais tarde te informo!
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Comigo deu certo, a multiplicação é o mesmo procedimento, basta mudar o operador!
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Está OK! certinho, valeu Edvaldo.
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Beleza Roniere, mostre código completo, pode ser?
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Amanha farei isso!
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

O resultado é esse Jothaz?

[img]http://arquivo.devmedia.com.br/forum/imagem/273948-20150508-125452.jpg[/img]
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Roniere, deu certo?
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Sim Edvaldo, seguiu perfeitamente o meu exemplo! testado e está ok!
GOSTEI 0
Edvaldo Amorim

Edvaldo Amorim

05/05/2015

Errei muito e pesquisei um pouco sobre como fazer mas o importante é que deu certo!, pode postar o código completo?
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015


#!/bin/bash

clear
function menu() {


echo "====================="
echo "Opções:"
echo "1) Para soma"
echo "2) Para multiplicação"
echo "3) Para sair"
read -p "Qual operação: " op

case $op in
 1) soma ;;
 2) mult ;;
 3) exit ;;
 *) echo "Opção Inexistente!"
    sleep 5
    clear 
    menu ;;
  esac
 }
 
function entrada () {
  echo "Informe o numero"
  read num
}

function soma() {
  echo "Informe o numero para somar"
  read num    
  for i in $(seq 0 10)
  do
    echo "soma: $num + $i = $(( $num + $i )) " 
  done
  
}

function mult() {
  echo "Informe o numero para multiplicar"
  read num    
  for i in $(seq 0 10)
  do
    echo "multiplicação: $num x $i = $(( $num * $i )) " 
  done
  
}
 
 menu

GOSTEI 0
Roniere Almeida

Roniere Almeida

05/05/2015

Jothaz???
GOSTEI 0
POSTAR