首页 > 解决方案 > shell脚本中的语法错误是什么

问题描述

计算机器的 CPU 负载并确定机器的状态(欠载或过载)。您必须使用一些 Unix 命令找出计算机的 CPU 使用率。

提示:借助 grep Unix 命令,您可以提取 CPU 使用率。如果 CPU 负载大于 70% 为过载,如果在 30% 到 70% 之间为中度负载,如果小于 30% 为轻载。

read -a currentRead <<< `top -bn1 | grep "Cpu(s)"`
userProcess=${currentRead[1]}
systemProcess=${currentRead[3]}
totalUsage=`echo $userProcess + $systemProcess | bc` 
echo "TotalCPU_Usage: $totalUsage%"
$totalUsage=$( printf "%.0f" $totalUsage )
b=70
c=30
if [ "$totalUsage" -gt 70.0 ]
then 
echo "Overloaded"
elif [ $totalUsage -lt $c ]
then 
echo "Lightly-Loaded"
else
echo "Moderately Loaded"
fi

它给出的输出如下:

TotalCPU_Usage: 5.8%
./DA_1.sh: line 6: $: command not found
./DA_1.sh: line 9: [: 5.8: integer expression expected
./DA_1.sh: line 12: [: 5.8: integer expression expected
Moderately Loaded

标签: bashshellcpu-usagescript

解决方案


由于这是家庭作业,我将把它作为提示:

  1. 使用更多报价™!简而言之,未加引号的变量引用会做一些奇怪的意想不到的事情。
  2. Bash支持整数数学,不支持分数、小数或浮点数。
  3. 通过shellcheck运行生成的脚本以获得更多提示以改进代码并避免错误。

推荐阅读