使用 shell 脚本将两个浮点数相加

使用 shell 脚本将两个浮点数相加

我正在尝试使用 shell 脚本将两个浮点数相加。我已经尝试过这个:

#!/bin/bash
if [ $# != 2 ]; then
    echo "2 arguments are required "
    exit
else
    x=$1
    y=$2
    sum = $x + $y
    echo ` sum = $sum | bc `
fi

当我向命令行提供两个参数时,例如:

bash filename.sh 2.4 5

...它给了我一个错误:[ 2 != 2 ] command not found

答案1

else
    echo -n "sum = "
    echo "$1 + $2" | bc
fi

将解决您尚未解决的问题的后半部分。你的第一个问题是个谜。 “ [”是一个内置命令,因此除非有引号,否则您不会向我们展示我不明白它如何[ $# != 2 ]作为一个单词。

答案2

使用bc

    #!/bin/bash
    n="$@" 
    bc <<< "${n// /+}"

假设脚本被调用add,或者对于那些喜欢轻松粘贴代码的人来说,尝试这个类似 shell 函数add() { n="$@"; bc <<< "${n// /+}"; }:函数和脚本的工作方式如下:

add 3.2 5.5
add 3.2 5.5 8.9
add {1..51}.{12..89}

大括号使用bash大括号扩展创建大约 4000 个字符串,这些字符串bc解释为十进制数字,范围从1.1251.89

输出:

8.7
17.6
105436.89

请注意,无需检查两个参数:

  • 它可以添加或更多的论据,

  • 没有参数不返回任何输出。

  • 它忽略普通字符串,因此add 5 6.7 abc edf 9返回20.7.

  • 如果数字不正确,它会返回语法错误,例如: 9z, 5.6.7, 8..,ETC。

答案3

用它来添加两个浮点数。

echo 12.8 12.2 | awk '{print $1 + $2}'

Result:- 25

只需用您的变量替换数字即可。

您可以使用

awk "BEGIN {print 12.8+12.2; exit}"

答案4

if [ "$#" != 2 ]; then
   echo "2 arguments are required"; exit 1
else
   x=$1 y=$2
   sum="[sum=]n $x $y + 2k p"
   echo "$sum" | dc
fi

结果:

sum=7.4

解释:

We use the `dc` calculator by placing the two operands on the stack and
adding the two top of stack elements. And prior to adding, we place a
string `sum=` on the stack, and immediately print it which as a side effect
also removes it from the stack. The precision of the results is set to 2.

相关内容