【发布时间】:2015-06-15 17:09:26
【问题描述】:
我正在尝试在 if 语句中使用 bc 将值与小数进行比较。
我不确定我在if statement 中是否正确使用了 bc,因为它似乎不起作用。它总是进入第四个if statement“IF4”。似乎没有正确读取其他条件?
#SET INITIAL SPEED
initialspeed() {
wpm=0
echo wpm: $wpm
#CHECKS IF SPEED WAS GIVEN
if [ -z "$wpm" ]
then
let wpm=0.6
echo IF1 wpm: $wpm #DEBUG
#CHECK IF SPEED IS VALID
elif [ 'echo "if$($wpm > 0.6)1;if$($wpm<=0.6)0" | bc' = 1 ]
then
echo IF2 wpm: $wpm #DEBUG
echo Error speed is less than 100 wpm
exit 3
elif [ 'echo "if$($wpm < 0.06)1;if$($wpm<=0.06)0" | bc' = 1 ]
then
echo IF3 wpm: $wpm #DEBUG
echo Error speed is more than 1000 wpm
exit 3
else
wpm=$(echo "scale=2;60/$2 | bc")
echo IF4 wpm: $wpm #DEBUG
fi
}
编辑: 我实际上是在尝试编写一个类似于“spritz”快速阅读器的脚本。 $1 是要读取的文件,$2 是单词在屏幕上显示的速度。 $2 是可选参数,如果没有给出我设置的默认速度。
给定的速度应在 100 到 1000 wpm 之间(计算前为 0.6 到 0.06)
【问题讨论】:
-
使用支持浮点的shell,比如korn shell。除了 bash 之外,几乎所有语言都支持浮点。
标签: bash if-statement bc