Как сделать арифметику с числами с плавающей запятой, такими как 1.503923 в оболочке script? Номера с плавающей запятой извлекаются из файла в виде строки. Формат файла выглядит следующим образом:
1.5493482,3.49384,33.284732,23.043852,2.2384...
3.384,3.282342,23.043852,2.23284,8.39283...
.
.
.
Вот несколько упрощенных примеров кода, которые мне нужно получить. Все работает отлично до арифметики. Я вытаскиваю строку из файла, а затем вытягиваю несколько значений из этой строки. Я думаю, что это сократит время обработки поиска, поскольку эти файлы огромны.
# 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
Выход, который я получаю:
expr: non-numeric argument
command not found
