shell脚本中的bc计算有问题

shell脚本中的bc计算有问题

在 Ubuntu 14.04.1 64 位 LTS 上,我正在编写一个 shell 脚本,如果我定义了在sequence中使用的开头for loop多变的代替持续的我的行为非常奇怪,计算器有很多错误bc。您可以运行以下代码片段来重现错误:

#!/bin/bash
S=0.030
F=0.150
N=30
DIFF=`echo $F - $S | bc -l`
dw=`echo $DIFF / $N | bc -l`
is=`echo $S / $dw | bc -l`
if=`echo $F / $dw | bc -l`
for i in `seq $is $if` 
    do
        w=`echo "scale=3; $i * $dw" | bc -l`
done

如果我将序列的开头更改为常量,它可以完美工作,但是当它是变量时,就会出现问题,输出如下:

(standard_in) 1: syntax error
...
...
(standard_in) 1: syntax error

这种行为背后的原因可能是什么?我希望收到您的建议和意见。

答案1

问题原来是我的 Ubuntu 安装中的小数点分隔符设置为,(逗号)而不是.(点)。我用以下命令更改了它:

sudo update-locale LC_NUMERIC="en_GB.UTF-8"

问题就解决了。

相关内容