shell脚本中浮点数相减

shell脚本中浮点数相减

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

代码

#!/bin/sh

CPU_IDLE=98.67
echo $CPU_IDLE
CPU_USAGE=$(( 100 - $CPU_IDLE ))
echo $CPU_USAGE

错误

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

答案1

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

$ CPU_IDLE=98.67
$ echo "$CPU_IDLE"
$ CPU_USAGE=$( bc <<< "100 - $CPU_IDLE" )
$ echo "$CPU_USAGE"
1.33

答案2

即使你使用了在你的问题中标记,脚本以 hashbang 开头#!/bin/sh,它将很少给你一个科恩壳。

其余代码ksh在 ubuntu 14.04 上与 (AT&T ksh93) 配合良好:

$ ksh poc.sh
98.67
1.33

$ ls -lL /bin/ksh*
-rwxr-xr-x 1 root root 1509040 Jan  9  2013 /bin/ksh
-rwxr-xr-x 1 root root 1509040 Jan  9  2013 /bin/ksh93

相关内容