所以我正在编写一个 bash 脚本,它必须根据命令“ps u”计算出总共使用了多少 CPU。我正在尝试像这样使用 awk:
TOTAL_CPU=$(ps u | awk '{sum = sum + $3}; END {print sum}')
命令“ps u”的典型输出有 11 列,第三列是 CPU 使用率。
问题是,这并不像它应该的那样工作。当 CPU 值有小数时,我收到如下错误:
syntax error: invalid arithmetic operator (error token is ".x")
其中 x 是总和后的“剩余”小数。例如,如果值为“1.4”和“8.7”,则总和为“10.1”,因此错误将显示:
syntax error: invalid arithmetic operator (error token is ".1")
我怎样才能做我需要的?如果小数被截断也没关系,我不需要很多精度。
编辑:帖子编辑器改变了我最初写的内容
EDIT2:问题解决了!这根本不是 awk 的错。事实证明,这行代码隐藏在其他地方:
declare -i TOTAL_CPU
所以 bash 试图将像“3.4”这样的值分配给一个预计只包含整数值的变量。我把这个放在这里,以防有人稍后通过谷歌找到这篇文章!