Melhor solução de ponto flutuante para o script bash?

0

Eu uso a bash calculator para cálculos de ponto flutuante e tenho que usar o símbolo de redirecionamento de entrada e backtick (') em scripts.

Como suporte normal, $[math operation] e expr não suporta cálculo de flutuação. Existe alguma outra maneira de fazer o cálculo float diretamente em vez de usar bc no script. Eu não gosto de redirecionamento de entrada desnecessário e símbolo backtick (') para scripts.

#!/bin/bash
x=5
y=6
z=3.3
result='bc <<end
scale=3
temp_divide=($x / $y)
temp_divide * $z
end'
echo "final result is $result"
    
por P K 29.12.2011 / 06:28

1 resposta

1

Bash não suporta aritmética de ponto flutuante, então você está preso com o uso de bc para isso. Você pode usar funções auxiliares escritas por você, semelhantes a float_eval , o que torna o uso de bc como inline calculator um pouco mais fácil.

Se você não precisa usar bash, você também pode considerar o uso de zsh , que suporta operações de ponto flutuante. Exemplo:

evnu@centraldogma ~ 
% ((val = 1.0))
evnu@centraldogma ~ 
% ((val = 2.2))
evnu@centraldogma ~ 
% echo $val
2.2000000000
evnu@centraldogma ~ 
% ((val += 2.2))
evnu@centraldogma ~ 
% echo $val
4.4000000000
    
por 29.12.2011 / 08:33