Dois números float de Substarct no shell script

0

Eu escrevi o shell script para subtrair dois valores flutuantes Por exemplo abaixo estão os dois valores:

debit_amount=7.853117806000353E7
credit_amount=3223649.619999993

val1=$(printf "%f", "$debit_amount")
val2=$(printf "%f", "$credit_amount")

echo " val1 = " $val1
echo " val2 = " $val2

final='echo "$val1-$val2" |bc'

Saída:

 val1 =  78531178.060004,
 val2 =  3223649.620000,
(standard_in) 1: syntax error

Eu recebi o erro acima. Eu tentei abaixo dos comandos também

final=$(echo "$val1 - $val2"|bc)
echo "$(($val1-$val2))"
echo 'expr $val1 - $val2'

No entanto, ainda estou recebendo um erro de sintaxe. Estou faltando alguma coisa?

    
por user 13.11.2015 / 06:35

1 resposta

1

Remova as vírgulas nas chamadas printf :

val1=$(printf "%f" "$debit_amount")
val2=$(printf "%f" "$credit_amount")

Não é necessário delimitar os argumentos por vírgula. É por isso que a entrada para bc ficou assim:

78531178.060004,-3223649.620000,

qual bc não pode interpretar.

BTW : você não deve usar os backticks ( ' ) mais :

final="$(echo "$val1 - $val2" | bc)"
    
por 13.11.2015 / 07:54