Linux - Operações Matemáticas
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 $
. Os operandos são representados por operand1
e operand2
, e o operador é representado por operation
. Por exemplo, no seguinte script chamado 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
e 3
. Ao executar o script:
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
e b
, e os resultados são atribuídos a outras variáveis. Note que as variáveis dentro dos parênteses são usadas sem o símbolo $
.
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
é atribuído à variável sum
, que é então exibida no console com o comando echo
. O ponto e vírgula ;
separa os dois comandos.
Devemos considerar que todas as operações, exceto multiplicação, podem ser realizadas dessa forma. Para executar a multiplicação, o símbolo *
deve ser precedido por uma barra invertida \
, caso contrário, ocorrerá um erro:
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