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

Avi*_*kar 15 bash shell-script

我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

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

bash filename.sh 2.4 5
Run Code Online (Sandbox Code Playgroud)

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

ica*_*rus 8

else
    echo -n "sum = "
    echo "$1 + $2" | bc
fi
Run Code Online (Sandbox Code Playgroud)

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


agc*_*agc 6

使用bc

    #!/bin/bash
    n="$@" 
    bc <<< "${n// /+}"
Run Code Online (Sandbox Code Playgroud)

假设该脚本的名称add,或为那些喜欢谁容易粘贴代码试试这个workalike外壳功能:add() { n="$@"; bc <<< "${n// /+}"; }; 函数和脚本都是这样工作的:

add 3.2 5.5
add 3.2 5.5 8.9
add {1..51}.{12..89}
Run Code Online (Sandbox Code Playgroud)

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

输出:

8.7
17.6
105436.89
Run Code Online (Sandbox Code Playgroud)

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

  • 它可以添加一个或多个参数,

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

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

  • 它返回一个语法错误,如果一个数字是不正确的,9z5.6.78..等。


Mod*_*der 5

用它来添加两个浮点数。

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

Result:- 25

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

您可以使用

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