如何在 bash 脚本中使用带小数的 if 语句进行计算
How to make calculations in if statement with decimals in bash script
#SET INITIAL SPEED
initialspeed() {
wpm=
#CHECKS IF SPEED WAS GIVEN
if [ -z "$wpm" ]
then
let wpm=0.6
sleep $wpm
#CHECK IF SPEED IS VALID
elif [ $wpm > 0.6 ]
then
echo Error speed is less than 100 wpm
exit 3
elif [ $wpm < 0.06 ]
then
echo Error speed is more than 1000 wpm
exit 3
else
sleep $wpm
fi
}
我正在尝试为我的睡眠计时器设置一个速度,但我认为我 运行 遇到了问题,因为 let
和 if statements
中的小数点。如何在 bash 脚本中使用小数?示例将不胜感激。提前谢谢你
bash
仅限于整数运算。
如果你有GNU工具(比如Linux),浮点比较可以用bc
完成,如下:
if echo "$wpm > 0.6" | bc -l | grep -q 1
then
echo speed is greater than 0.6
else
echo speed is less than or equal to 0.6
fi
对于非 GNU bc
,可以使用稍长的语句来完成相同的操作:
if echo "if ($wpm > 0.6) print 1 else print 0 " | bc -l | grep -q 1
then
echo speed is greater than 0.6
else
echo speed is less than or equal to 0.6
fi
#SET INITIAL SPEED
initialspeed() {
wpm=
#CHECKS IF SPEED WAS GIVEN
if [ -z "$wpm" ]
then
let wpm=0.6
sleep $wpm
#CHECK IF SPEED IS VALID
elif [ $wpm > 0.6 ]
then
echo Error speed is less than 100 wpm
exit 3
elif [ $wpm < 0.06 ]
then
echo Error speed is more than 1000 wpm
exit 3
else
sleep $wpm
fi
}
我正在尝试为我的睡眠计时器设置一个速度,但我认为我 运行 遇到了问题,因为 let
和 if statements
中的小数点。如何在 bash 脚本中使用小数?示例将不胜感激。提前谢谢你
bash
仅限于整数运算。
如果你有GNU工具(比如Linux),浮点比较可以用bc
完成,如下:
if echo "$wpm > 0.6" | bc -l | grep -q 1
then
echo speed is greater than 0.6
else
echo speed is less than or equal to 0.6
fi
对于非 GNU bc
,可以使用稍长的语句来完成相同的操作:
if echo "if ($wpm > 0.6) print 1 else print 0 " | bc -l | grep -q 1
then
echo speed is greater than 0.6
else
echo speed is less than or equal to 0.6
fi