Gleitkomma-Arithmetik im UNIX-Shell-Skript
So rechnen Sie mit Gleitkommazahlen wie1.503923 in einem Shell-Skript? Die Gleitkommazahlen werden als Zeichenfolge aus einer Datei gezogen. Das Format der Datei ist wie folgt:
1.5493482,3.49384,33.284732,23.043852,2.2384...
3.384,3.282342,23.043852,2.23284,8.39283...
.
.
.
Hier ist ein vereinfachter Beispielcode, den ich zum Arbeiten brauche. Alles funktioniert gut bis zur Arithmetik. Ich ziehe eine Zeile aus der Datei und dann mehrere Werte aus dieser Zeile. Ich denke, dies würde die Suchverarbeitungszeit verkürzen, da diese Dateien riesig sind.
# set vars, loops etc.
while [ $line_no -gt 0 ]
do
line_string=`sed -n $line_no'p' $file_path` # Pull Line (str) from a file
string1=${line_string:9:6} # Pull value from the Line
string2=${line_string:16:6}
string3=...
.
.
.
calc1= `expr $string2 - $string7` |bc -l # I tried these and various
calc2= ` "$string3" * "$string2" ` |bc -l # other combinations
calc3= `expr $string2 - $string1`
calc4= "$string2 + $string8" |bc
.
.
.
generic_function_call # Use the variables in functions
line_no=`expr $line_no - 1` # Counter--
done
Ausgabe bekomme ich immer wieder:
expr: non-numeric argument
command not found