在 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"
问题就解决了。