我正在尝试使用 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.12到51.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.