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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage