【问题标题】:substraction of variable having float value is not working [duplicate]减去具有浮点值的变量不起作用[重复]
【发布时间】:2019-07-16 15:06:29
【问题描述】:

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

MEM_USED_PC=`prstat -Z 1 1 | grep -i sz | awk '{print $5}' | 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 solaris


【解决方案1】:

您可以使用计算器 CLI,bc

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

【讨论】:

    【解决方案2】:

    由于 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2015-06-30
      • 2018-09-13
      相关资源
      最近更新 更多