我想用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
有人知道发生了什么以及如何解决这个问题吗?
答案 0 :(得分:2)
使用bc评估比较:
if (( $(echo "$deltaE > 0.0001" | bc -l) )); then
...
fi