在 shell 脚本中减去浮点数

sug*_*nan 3 linux bash ksh shell-script arithmetic

我正在尝试使用 CPU 使用率在 shell 脚本中进行一些计算。其中返回浮点数。但是当我减去这个数字时,我得到了错误。请参阅以下代码和错误。

代码

#!/bin/sh

CPU_IDLE=98.67
echo $CPU_IDLE
CPU_USAGE=$(( 100 - $CPU_IDLE ))
echo $CPU_USAGE
Run Code Online (Sandbox Code Playgroud)

错误

./poc.sh: line 14: 100 - 98.67 : syntax error: invalid arithmetic operator (error token is ".67 ")
Run Code Online (Sandbox Code Playgroud)

jim*_*mij 7

bash不能也ksh不能执行浮点运算(ksh93如果我没记错的话支持)。我建议切换到zsh或运行外部工具,如bc

$ CPU_IDLE=98.67
$ echo "$CPU_IDLE"
$ CPU_USAGE=$( bc <<< "100 - $CPU_IDLE" )
$ echo "$CPU_USAGE"
1.33
Run Code Online (Sandbox Code Playgroud)