脚本中的 bc 在除法时不显示小数

脚本中的 bc 在除法时不显示小数

我制作了这个简单的脚本,要求您输入被除数和除数,然后显示商:

#!/bin/bash
read -p "Dividend? " dividend
read -p "Divisor? " divisor
    if [ $divisor = "0" ]
        then
            echo "∞"
    else
        echo "$((scale=4;$dividend / $divisor))" | bc
    fi

但是如果您输入的除数不等于 0,则会显示此语法错误:

./division.sh: line 8: scale=4;5 / 4: syntax error: invalid arithmetic operator (error token is ";5 / 4")

我不知道为什么这不起作用,我看到了一个线程这是使用 bc 获取小数的方法。有人知道哪里出了问题吗?提前致谢。

答案1

由于您正在使用bc进行计算,因此无需使用bash 算术扩展$((...)))。
此外,你的语法算术扩展是错误的,因为;没有算术运算符。其次,这种方法只能输出整数。

正确的脚本如下所示。

#!/bin/bash
read -p "Dividend? " dividend
read -p "Divisor? " divisor
    if [ $divisor = "0" ]
        then
            echo "∞"
    else
        echo "scale=4;$dividend / $divisor" | bc
    fi

相关内容