script

1. script

Gabriel Everton Pereira Rodrigues
gabrielrodrigues

(usa Debian)

Enviado em 13/04/2020 - 17:14h

Elabore um script que realize as operações aritméticas básicas (soma, subtração, divisão e multiplicação), recebendo a operação e os operadores (read). Caso o usuário insira um operador inválido, a execução do script deve ser abortada.
$ sh script.sh
$ Digite os operandos e a operação: 5 + 2
$ 5 + 2 = 7



  


2. Re: script

Matheus
pylm

(usa Gentoo)

Enviado em 13/04/2020 - 17:18h

Dá uma olhada no eval.


3. script

Gabriel Everton Pereira Rodrigues
gabrielrodrigues

(usa Debian)

Enviado em 13/04/2020 - 17:22h

pylm escreveu:

Dá uma olhada no eval.

o que seria ? um canal ?



5. script

Gabriel Everton Pereira Rodrigues
gabrielrodrigues

(usa Debian)

Enviado em 13/04/2020 - 18:02h

Obrigado irmão !


6. Re: script

Rogerio
RogerDez

(usa Outra)

Enviado em 13/04/2020 - 18:25h

eu fiz um wrapper para calculadora do bash, a bc

só estou disponibilizando aqui para quem quiser usar
e quem sabe tem algo lá que ajuda no exercício ou não.
https://pastebin.com/zWF2zPwe


7. Re: script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/04/2020 - 18:54h

gabrielrodrigues escreveu:

Elabore um script que realize as operações aritméticas básicas (soma, subtração, divisão e multiplicação), recebendo a operação e os operadores (read). Caso o usuário insira um operador inválido, a execução do script deve ser abortada.
$ sh script.sh
$ Digite os operandos e a operação: 5 + 2
$ 5 + 2 = 7

Boa noite Gabriel.
Segue sugestão:
#!/bin/bash
clear;

testa_operacao() {
[[ "$ope" =~ ^([+-/*])$ ]] && resposta || erro "Operação Inválida"
}

testa_num(){
[[ "$1" =~ ^([0-9.]+)$ ]] || erro "Número Inválido";
}

resposta(){
echo -e "\nResposta:\n${num1} ${ope} ${num2} = $(bc <<< "scale=2;${num1}${ope}${num2}"|sed 's/^\./0./')"
}

erro(){
echo -e "\n$1\n\nUso:\n\"[0-9.]+ [+-/*] [0-9.]+\"\nOperações:\nSoma: +\nSubtração: -\nMultiplicação: *\nDivisão: /\n";
exit;
}

read -p "1º número: " num1;testa_num "$num1";
read -p "2º número: " num2;testa_num "$num2";
read -p "Operação: " ope;testa_operacao;

OBS.: Além do teste da "operação", coloquei um teste de NÚMERO,
se achar desnecessário, é só retirar e não fazer as chamadas para a função.
testa_num "$num1"; testa_num "$num2";
Uso: ./script.sh
Onde "script.sh", é o nome dado ao script
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________