# Like everything else in shell, these are strings, not
# floating-point values
d1=0.003
d2=0.0008
# bc parses its input to perform math
d1d2=$(echo "$d1 + $d2" | bc)
# These, too, are strings (not integers)
mean1=7
mean2=5
# $((...)) is a built-in construct that can parse
# its contents as integers; valid identifiers
# are recursively resolved as variables.
meandiff=$((mean1 - mean2))
5条答案
按热度按时间b5lpy0ml1#
bash
不支持浮点运算。您需要使用bc
之类的外部实用程序。wydwbb8l2#
计算浮点数的另一种方法是使用AWK rounding功能,例如:
pkmbmrz73#
如果你不需要浮点精度,你可以简单地去掉小数部分。
echo $var | cut -d "." -f 1 | cut -d "," -f 1
剪切值的整数部分。2使用两次剪切的原因是为了分析整数部分,以防区域设置可能使用点来分隔小数,而其他一些可能使用逗号。
或者,为了自动化区域设置,可以使用
locale
。echo $var | cut -d $(locale decimal_point) -f 1
8i9zcol24#
你可以改变你正在使用的shell。如果你正在使用bash shell
bash scriptname.sh
执行你的脚本,尝试使用ksh来执行你的脚本。Bash不支持涉及浮点数的算术运算。3duebb1j5#
大声喊出
bc
命令-它完全拯救了我的一天!这是一个简单的答案,但它的工作就像一个魅力。bc
是一个命令行计算器,允许用户在终端上执行数学计算。