嗨,我有以下代码:
#!/bin/bash
atmo =`echo "-5000*l(10^-6)" | bc -l`
echo "Threshold: $atmo m"
for altitude in {70000..0..10}
do
if [[ $altitude < $atmo ]]; then
printf "A %.1f m\n" "$altitude"
else
printf "B %.1f m\n" "$altitude"
fi
done
因此,如果altitude
它太高(大约 69077)它应该进入 else 分支。现在这实际上一直有效,直到altitude
失去一个有效数字(例如从 10000 切换到 9990)。然后它开始转到 else 分支,直到altitude
低于 的十分之一atmo
。当高度从 1000 切换到 990 时,再次发生这种情况。它再次进入 else 分支,直到高度低于百分之一atmo
,依此类推。
所以基本上是:
- 70000 到 69080:else 分支(正确)
- 69000 到 10000:如果分支(正确)
- 9990 到 6910:else 分支(不正确)
- 6900 到 1000:如果分支(正确)
- 990 到 700:else 分支(不正确)
- 690 到 100:如果分支(正确)
- 90 到 70:else 分支(不正确)
- 60 到 0:如果分支(正确)
现在的问题是如何解决这种奇怪的行为?