Как сделать арифметику с числами с плавающей запятой, такими как 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