Operações Matemáticas - Linux
O Bash suporta a execução de operações matemáticas básicas:
Adição
: 5 + 4 = 9+
Subtração
: 5 - 4 = 1-
Multiplicação
: 5 * 4 = 20*
Divisão
: 5 / 4 = 1/
Operação Módulo
: 5 % 4 = 1%
Todas as operações têm a seguinte sintaxe:
$((operand1 operation operand2))
As operações são envolvidas por dois pares de parênteses, e antes do primeiro parêntese é colocado o símbolo $
operand1
operand2
operation
hello
#!/bin/bash
# Script que executa operações matemáticas
result=$((1 + 3))
echo "result = $result"
exit 0
Aqui, a variável result recebe o resultado da soma dos números 1
3
programicio@Programicio:~$ bash hello result = 4
Agora, vamos usar variáveis:
#!/bin/bash
# Script que executa operações matemáticas
a=9
b=4
n1=$((a + b))
n2=$((a - b))
n3=$((a * b))
n4=$((a / b))
n5=$((a % b))
echo "a + b = $n1"
echo "a - b = $n2"
echo "a * b = $n3"
echo "a / b = $n4"
echo "a % b = $n5"
exit 0
Nesse caso, são realizadas operações aritméticas com as variáveis a
b
$
n1=$((a + b))
Ao executar o script:
programicio@Programicio:~$ bash hello a + b = 13 a - b = 5 a * b = 36 a / b = 2 a % b = 1
Há outra forma de realizar operações matemáticas, usando o comando expr
expr operand1 operation operand2
Por exemplo, para somar dois números:
programicio@Programicio:~$ expr 5 + 2 7
De forma similar, podemos usar a substituição de comando e atribuir o resultado a uma variável:
programicio@Programicio:~$ sum=`expr 5 + 2`; echo $sum 7
Nesse caso, o resultado da soma 5 + 2
sum
echo
;
Devemos considerar que todas as operações, exceto multiplicação, podem ser realizadas dessa forma. Para executar a multiplicação, o símbolo *
\
programicio@Programicio:~$ expr 5 * 2 expr: syntax error: unexpected argument programicio@Programicio:~$ expr 5 \* 2 10
Também podemos realizar operações matemáticas sem expr, se o resultado for atribuído a uma variável definida com o comando let
programicio@Programicio:~$ let result="5+2" programicio@Programicio:~$ echo $result 7 programicio@Programicio:~$ let result="5*2" programicio@Programicio:~$ echo $result 10