Floating-point-Arithmetik in UNIX-shell-Skript

Wie rechnen mit Gleitkomma-zahlen wie 1.503923 in einem shell-Skript aus? Die floating-point-zahlen sind, gezogen aus einer Datei als string. 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 etwas Vereinfachtes Beispiel-code, den ich brauche, um zu arbeiten. Alles funktioniert einwandfrei bis auf die Arithmetik. Ich ziehe eine Linie von der Datei, dann ziehen Sie mehrere Werte aus dieser Zeile. Ich denke, dass das reduzieren auf die Suche nach Bearbeitungszeit, da diese Dateien sind sehr groß.

# 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, die ich erhalte:

expr: non-numeric argument
command not found
Schreibe einen Kommentar