具有浮点值的变量的减法不起作用

substraction of variable having float value is not working

我在下面作为 solaris 10 上 bash 脚本的一部分执行。

MEM_USED_PC=`prstat -Z 1 1 | grep -i sz | awk '{print }' | sed 's/%//'`
MEM_TOTAL_PC=100

MEM_FREE_PC=$(($MEM_TOTAL_PC-$MEM_USED_PC))

echo $MEM_FREE_PC 给出以下错误:

100-6.5: syntax error: invalid arithmetic operator (error token is ".5")

可能是什么问题?

因为bash不支持浮点数,你需要像awk这样的东西来计算结果:

$ MEM_TOTAL_PC=100
$ MEM_USED_PC=99.33
$ MEM_FREE_PC=$(awk -v MEM_TOTAL_PC=$MEM_TOTAL_PC -v MEM_USED_PC=$MEM_USED_PC 'BEGIN {print MEM_TOTAL_PC-MEM_USED_PC}')
$ echo $MEM_FREE_PC
0.67

您可以使用计算器 CLI,bc

MEM_FREE_PC=$(echo "$MEM_TOTAL_PC - $MEM_USED_PC" | bc)
echo $MEM_FREE_PC