如何在bash if语句中使用bc?

hot*_*ks0 3 bash if-statement bc

我正在尝试使用 bc 将 if 语句中的值与小数进行比较。我不确定我是否在我的程序中正确使用了 bc,if statement因为它似乎不起作用。它总是输入第四个if statementIF4”。其他条件似乎没有被正确读取?

 #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
}
Run Code Online (Sandbox Code Playgroud)

编辑:我实际上正在尝试编写一个类似于“spritz”快速阅读器的脚本。$1 是要读取的文件,$2 是文字显示到屏幕上的速度。$2 是可选参数,如果没有给出我设置默认速度。

给出的速度应在 100 至 1000 wpm 之间(计算前为 0.6 至 0.06)

Wal*_*r A 5

您可以将测试通过管道传输到 bc 中

echo "$wpm > 0.06" | bc
Run Code Online (Sandbox Code Playgroud)

测试结果是可能的

if [ $(echo "$wpm > 0.06" | bc) -eq 1 ]; then
    echo "You are going to fast"
else
    echo "Slow"
fi
Run Code Online (Sandbox Code Playgroud)