bash中while循环中的实数

时间:2015-09-30 13:45:21

标签: bash

我想用bash做一个while循环,使用实数,但它总是给我错误。无论我尝试在互联网上找到什么,它都无法解决问题。

这是我的代码中有问题的部分:(能量是通过像energy = $(echo“$ real1 - $ real2”| bc -l)这样的命令找到的。

energy=${energy#-}
deltaE=$(echo "$energy"  | bc -l)
echo $energy
echo $deltaE

while (( $deltaE > 0.0001 ));
do

当然在“做”之后会有一些东西,但执行在这里停止。这给了我以下错误:

1.999655175151897025
1.999655175151897025
./run_ILDA.sh: line 99: ((: 1.999655175151897025 > 0.0001 : syntax error: invalid arithmetic operator (error token is ".999655175151897025 > 0.0001 ")

没有$:

while (( deltaE > 0.0001 ));
do

它给出了

1.999655175151897025
1.999655175151897025
./run_ILDA.sh: line 99: ((: 1.999655175151897025: syntax error: invalid arithmetic operator (error token is ".999655175151897025")

我也尝试过:

while [  $deltaE -gt 0.0001 ]
do

这给了我:

1.999655175151897025
1.999655175151897025
./run_ILDA.sh: line 99: [: 1.999655175151897025: integer expression expected

有人知道发生了什么以及如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

使用bc评估比较:

if (( $(echo "$deltaE > 0.0001" | bc -l) )); then
    ...
fi