Ersetzen Sie zwei Float-Nummern im Shell-Skript

650
user

Ich habe ein Shell-Skript geschrieben, um zwei Float-Werte zu subtrahieren. Unten sind die zwei Werte:

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` 

Ausgabe :

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

Ich habe den obigen Fehler erhalten. Ich habe auch unter den Befehlen versucht

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

Ich bekomme jedoch immer noch einen Syntaxfehler. Fehlt mir etwas?

0

1 Antwort auf die Frage

1
chaos

Entfernen Sie die Kommas in den printfAufrufen:

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

Es ist nicht notwendig, die Argumente durch Kommas abzugrenzen. Deshalb bcsah die Eingabe für so aus:

78531178.060004,-3223649.620000, 

das bckann nicht interpretieren.


BTW : Sie sollten die Backticks ( `) nicht mehr verwenden :

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