我正在尝试在 Ubuntu virtualbox 中使用 shell 文本执行此操作:
#!/bin/bash
n1=3.5
n2=3.6
n3=3.7
n=3
let promedio=n1+n2+n3/3
echo $promedio
是关于学生平均成绩的。但终端显示错误:
line 7: let: 3.5: syntax error: invalid arithmetic operator (error token is ".5")
为什么?我无法用数字进行 + 运算。我该怎么办?
我正在阅读有关 BC 命令的内容,但我不知道它去了哪里。
编辑:我尝试在末尾添加 | BC,但出现同样的错误。我还尝试查看有关此问题的帖子,但他们使用了一些不同的东西,我真的不明白,因为我对 Ubuntu 真的很陌生。他们使用$echo
或类似的东西,但我使用的代码不同。
答案1
Bash 中没有浮点算术运算。因此,您可以使用 BC 来计算它:
#!/bin/bash
n1=3.5
n2=3.6
n3=3.7
promedio=`echo $n1 + $n2+ $n3/3 | bc`
echo $promedio # 3.5 + 3.6 + 1 = 8.1 **This might be not what you want**
BC 是一个简单的命令行计算器。
顺便说一句,echo <expression> | bc
命令会将使用 BC 获得的表达式的计算发送到 bash。
稍微解释一下:
因此,通过封装两个`,您说的是 promedio 值是通过命令获得的结果。(换句话说,它被称为命令替换,请参阅这里了解更多信息)
通过使用,
echo
您说结果将是通过 BC 获得的某些计算的输出。而且这些命令在逻辑上存在缺陷,如果
bc
这样使用,它会以整数来划分,(3.7/3 = 1),所以你应该使用bc -l
命令来精确计算(3.7/3 = 1.2333...)。
要除这三个数字的总和,你应该正确地使用括号:
#!/bin/bash
n1=3.5
n2=3.6
n3=3.7
promedio=`echo "($n1 + $n2+ $n3)/3" | bc -l`
echo $promedio # (3.5 + 3.6 + 3.7)/3 = 3.60000...