Não.
Bash não pode realizar aritmética de ponto flutuante nativamente.
Não é isso que você está procurando, mas pode ajudar alguém:
Alternativas
-
bc
bc
permite aritmética de ponto flutuante e pode até converter números inteiros em ponto flutuante definindo o valor scale
. (Observe que o valor scale
afeta apenas a divisão em bc
, mas uma solução alternativa para isso é finalizar qualquer fórmula com divisão por 1)
$ echo '10.1 / 1.1' | bc -l
9.18181818181818181818
$ echo '55 * 0.111111' | bc -l
6.111105
$ echo 'scale=4; 1 + 1' | bc -l
2
$ echo 'scale=4; 1 + 1 / 1' | bc -l
2.0000
-
awk
awk
é uma linguagem de programação em si, mas é facilmente aproveitada para executar aritmética de ponto flutuante em seus scripts bash, mas isso não é tudo que pode fazer!
echo | awk '{print 10.1 / 1.1}'
9.18182
$ awk 'BEGIN{print 55 * 0.111111}'
6.11111
$ echo | awk '{print log(100)}'
4.60517
$ awk 'BEGIN{print sqrt(100)}'
10
Usei echo
canalizado para awk
e BEGIN
para mostrar duas maneiras de fazer isso. Qualquer coisa dentro de uma instrução awk
BEGIN
será executada antes que a entrada seja lida, no entanto, sem entrada ou uma instrução BEGIN, awk
não executaria, portanto, será necessário alimentá-la.
-
Perl
Outra linguagem de programação que pode ser aproveitada em um script bash.
$ perl -l -e 'print 10.1 / 1.1'
9.18181818181818
$ somevar="$(perl -e 'print 55 * 0.111111')"; echo "$somevar"
6.111105
-
Python
Outra linguagem de programação que pode ser aproveitada em um script bash.
$ python -c 'print 10.1 / 1.1'
9.18181818182
$ somevar="$(python -c 'print 55 * 0.111111')"; echo "$somevar"
6.111105
-
Ruby
Outra linguagem de programação que pode ser aproveitada em um script bash.
$ ruby -l -e 'print 10.1 / 1.1'
9.18181818181818
$ somevar="$(ruby -e 'print 55 * 0.111111')"; echo "$somevar"
6.111105