如何在bash中打印用户输入的平方根?

时间:2016-09-05 19:38:38

标签: bash

我最近发现了' bc'在bash中,我一直在尝试使用它打印出用户输入的平方根。我在下面写的程序运行成功,但它只打印出' 0' 0而不是用户输入的平方根。

这是我写的代码:

(function() {
    function matcher(term, text) {

        term = term.toUpperCase();
        text = text.toUpperCase().replace(/\./g, '').replace(/\s+/g, '');

        if (text.indexOf(term) > -1 ) {
            return true;
        }

        return false;
    }

    $(".select2").select2({
        matcher: matcher
    });
})();

我的代码有什么问题?我错过了什么?

4 个答案:

答案 0 :(得分:3)

您的bc命令和命令替换的使用是正确的,问题是您在未设置时提供了echo $a。做:

a=$(bc <<< "scale=0; sqrt($VAR)")
echo "$a"

同样在扩展变量时,您应该使用通常的变量扩展表示法$var${var}。我还从()删除了一对冗余sqrt()

答案 1 :(得分:1)

也可以使用awk。例如,以下示例显示了98的平方根的30个小数:

awk "BEGIN {printf \"%.30f\n\", sqrt(98)}"

上面的命令将输出9.899494936611665352188538236078,然后您可以将其存储到a变量中。

答案 2 :(得分:0)

假设您在变量var中有一个数字,并且您想要该变量的平方根。你也可以使用awk:

a=$(awk -v x=$var 'BEGIN{print sqrt(x)}')

a=$(echo "$var" | awk '{print sqrt($1)}')

答案 3 :(得分:0)

如果您安装了qalc程序(apt-get install qalc),则与使用bc相比,您可以更轻松地进行平方根和其他计算。

平方根可以这样完成:

qalc "sqrt(36)"

手册页不是很有帮助(至少对于我安装的版本而言),但是您可以在此处获得更多信息: