Como sabemos, o bash possui diversas funcionalidades.
Uma delas é a capacidade de realizar cálculos matemáticos sem o auxílio de ferramentas externas.
Sintaxe:
$((expressão))
Exemplos:
echo $((7+8))
15
echo $((30/10))
3
echo $((4*2))
8
echo $((196-75))
121
echo $((189*23+34/2-300))
4064
echo $((189*(23+34)/2-300))
5086
Operações envolvendo valores de variáveis:
Exemplo:
var=12
$ echo $((var*5))
60
Observações:
Também é possível atingir os mesmos resultados com a sintaxe:
$[expressão]
Mas esta sintaxe está em desuso e será removida do bash em versões futuras.
Atenção!
Não confunda a sintaxe (deprecada) de operações aritméticas do bash:
Exemplo:
$[5+6]
Com a sintaxe de estruturas condicionais:
Exemplo:
if [ $var -eq 10 ]
Note que no primeiro caso, o espaço entre os colchetes e os valores e os colchetes "[]" é opcional, enquanto que no segundo caso este espaço é obrigatório.
[2] Comentário enviado por anonimoculto em 06/06/2018 - 11:47h
ATENÇÃO: o bash só executa operações com números inteiros. Para operações com ponto flutuante é necessário usar a calculadora bc.
Exemplo:
echo $((10/3))
3
echo $(bc <<< "scale=4; 10/3")
3,3333
echo $(bc <<< "scale=22; 10/3")
3.3333333333333333333333
O comando acima usa o recurso "here string" do bash. A calculadora bc é invocada e o conteúdo das aspas é-lhe passado. scale define o número de casas decimal com a qual se deseja a resposta; no caso 4. A operação a ser realizada segue-se após o comando scale.
Repare que se usa no caso apenas o par de parêntesis simples. Está-se buscando o resultado de um comando $(comando) e não pela execução de uma operação matemática $(( operação aritmética )).