具有浮点值的变量的减法不起作用
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
我在下面作为 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