我正在尝试在 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