Shell Scripting – Cálculos aritméticos simples no bash – 10
Cálculos aritméticos em Shell Scripting
Realizar cálculos aritméticos é uma das operações mais importantes em scripts de shell. O shell permite fazer cálculos simples, como soma, subtração, multiplicação e divisão, através de diversas formas.
Neste tutorial, veremos como usar operadores aritméticos no shell, com exemplos práticos.
Operadores aritméticos básicos no shell
No shell, os cálculos aritméticos podem ser feitos de forma simples, usando operadores comuns como:
- Soma (+)
- Subtração (-)
- Multiplicação (*)
- Divisão (/)
- Módulo (resto da divisão) (%)
- Incremento (++)
- Decremento (–)
Vejamos como usar esses operadores para fazer cálculos no shell Bash.
Como fazer cálculos no shell
Para realizar cálculos em shell, podemos usar três métodos principais:
1. Com o comando expr
2. Com (( )) (expressões aritméticas)
3. Com o comando let
Vejamos cada um desses casos. Para os exemplo, vamos assumir um script de nome aritmetica.sh, com a devida permissão de execução já atribuída.
1. Usando expr
O comando expr é utilizado para avaliar expressões aritméticas. Contudo, é necessário ter muito cuidado com espaços, pois expr precisa de espaços antes e depois de cada operador.
Exemplo de soma com expr:
#!/bin/bash a=5 b=3 res=$(expr $a + $b) echo "Resultado da soma: $res"
Saída:
Resultado da soma: 8
Note que, ao usar expr, o comando é executado dentro de $( ) (substituição de comando), e os operadores precisam de espaços.
Exemplo de divisão com expr:
#!/bin/bash a=12 b=2 res=$(expr $a / $b) echo "Resultado da divisão: $res"
Saída:
Resultado da divisão: 6
Note que o resultado será sempre um número inteiro, mesmo que haja parte fracionária resultante no cálculo.
2. Usando (( )) (expressões aritméticas)
O método (( )) é muito mais direto e permite uma sintaxe mais simples para cálculos aritméticos. Aqui, podemos usar os operadores de forma mais parecida com uma linguagem de programação tradicional.
Exemplo de soma com (( )):
#!/bin/bash a=5 b=3 (( res = a + b )) echo "Soma: $res"
Saída:
Soma: 8
No caso de (( )), a variável resultado é atribuída diretamente com a operação, sem a necessidade de usar o comando expr ou $(). Além disso, não há a necessidade de colocar espaços em torno dos operadores.
Exemplo de multiplicação com (( )):
#!/bin/bash a=5 b=3 (( res = a * b )) echo "Produto: $res"
Saída:
Produto: 15
3. Usando o comando let
O comando let é outra forma de realizar cálculos aritméticos, permitindo fazer as operações diretamente.
Exemplo de soma com let:
#!/bin/bash a=5 b=3 let res=$a+$b echo "Resultado da soma: $res"
Saída:
Resultado da soma: 8
O comando let também funciona de forma semelhante ao (( )), mas é um pouco mais antigo e menos utilizado.
Considerações sobre divisão em scripts
Quando usamos o operador de divisão (/) em cálculos de shell, ele realiza uma divisão inteira. Ou seja, a parte decimal é descartada, e o resultado é arredondado para baixo.
Exemplo de divisão com (( )) (com resultado inteiro):
#!/bin/bash a=10 b=3 (( res = a / b )) echo "Resultado da divisão inteira: $res"
Saída:
Resultado da divisão inteira: 3
Se fosse utilizado expr ou let, o comportamento seria o mesmo, descartando a parte decimal.
Como lidar com divisão de números decimais
Para lidar com cálculos com números decimais (ponto flutuante), podemos usar o comando bc, que permite realizar operações matemáticas com precisão maior. Vamos ver um exemplo:
Exemplo de divisão com ponto flutuante usando bc:
#!/bin/bash a=10 b=3 resultado=$(echo "scale=2; $a / $b" | bc) echo "Resultado da divisão com ponto flutuante: $resultado"
Saída:
Resultado da divisão com ponto flutuante: 3.33
O comando scale=2 define a precisão de dois dígitos após a vírgula.
Erro de Divisão por Zero
Note que, se a variável $b tiver o valor igual a zero, ocorrerá um erro de divisão por zero ao executar o script, como segue:
Runtime error (func=(main), adr=12): Divide by zero
Para evitar e tratar esse erro, podemos fazer uma validação do valor de b usando uma estrutura exibindo a mensagem personalizada “Erro: Divisão por zero não é permitida.”, e pulando a divisão.
Já se b não for zero, o cálculo é realizado normalmente usando o comando bc, e o resultado é exibido:
#!/bin/bash a=10 # Defina o valor de a b=0 # Defina o valor de b para testar divisão por zero if [ "$b" -eq 0 ]; then echo "Erro: Divisão por zero não é permitida." else resultado=$(echo "scale=2; $a / $b" | bc) echo "Resultado da divisão: $resultado" fi
Calcular raiz quadrada em scripts do shell
Usando a calculadora bc em scripts do shell podemos realizar cálculos mais avançados e complexos, por exemplo envolvendo o uso de senos, cossenos, logaritmos, raízes e exponenciais. No exemplo abaixo, por exemplo, criamos um script que recebe um número como argumento e retorna sua raiz quadrada:
num=$1 raiz=$(echo "scale=2. sqrt($num)" | bc) echo "Raiz Quadrada de $num é igual a $raiz"
Para testar, invocamos o script no terminal passando um valor qualquer, como 81:
$ ./aritmetica.sh 81
Saída:
Raiz Quadrada de 81 é igual a 9.00
Exercícios: Operações aritméticas em scripts do shell
Abaixo trago uma lista com alguns exercícios sobre operadores aritméticos no shell para treino.
1. Soma de dois números
Crie um script que receba dois números como argumentos e calcule a soma entre eles.
Exemplo de execução:
./soma.sh 10 20
2. Calcular o quadrado de um número
Crie um script que receba um número e calcule seu quadrado (multiplicação do número por ele mesmo).
3. Cálculo de média
Crie um script que receba três notas e calcule a média aritmética dessas notas.
4. Média aritmética ponto flutuante
Crie um script que receba três notas e calcule a média aritmética dessas notas., considerando números decimais.
5. Operações combinadas
Crie um script que realize as seguintes operações:
- Receber dois números e calcular a soma.
- Subtrair 5 do resultado da soma.
- Multiplicar o resultado final por 3.
Resolução dos exercícios
Exercício 1
#!/bin/bash a=$1 b=$2 resultado=$(( a + b )) echo "Resultado da soma: $resultado"
Exercício 2
#!/bin/bash a=$1 resultado=$(( a * a )) echo "O quadrado de $a é: $resultado"
Exercício 3
#!/bin/bash nota1=$1 nota2=$2 nota3=$3 media=$(( (nota1 + nota2 + nota3) / 3 )) echo "A média é: $media"
Exercício 4
#!/bin/bash nota1=$1 nota2=$2 nota3=$3 media=$(echo "scale=2; ($nota1 + $nota2 + $nota3) / 3" | bc) echo "A média é: $media"
Exercício 5
#!/bin/bash a=$1 b=$2 soma=$(( a + b )) resultado=$(( soma - 5 )) final=$(( resultado * 3 )) echo "Resultado final: $final"
Conclusão
Neste tutorial, vimos como fazer cálculos aritméticos simples em shell scripting, usando operadores como soma, subtração, multiplicação, divisão e módulo. Também exploramos como realizar cálculos com números de ponto flutuante usando o comando bc e como utilizar variáveis para tornar os scripts mais dinâmicos.
Além disso, apresentamos exercícios práticos para consolidar o aprendizado.
Escreva um comentário