bash - 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
解决方案
由于这是家庭作业,我将把它作为提示:
- 使用更多报价™!简而言之,未加引号的变量引用会做一些奇怪的意想不到的事情。
- Bash仅支持整数数学,不支持分数、小数或浮点数。
- 通过shellcheck运行生成的脚本以获得更多提示以改进代码并避免错误。
推荐阅读
- c# - 为什么在我的 Web 服务中调用此方法时出现错误“无法将类型 'void' 隐式转换为 'string'?
- python - 如何修复 NameError:未定义名称“phrasedocs”
- apache-nifi - NiFi 最大线程数
- matplotlib - ggplot:具有 95% 置信区间的箱线图
- laravel - 使用 Laravel 框架引用图像
- java - 如何将所有 JTable 行放入字符串数组?
- c++ - c++ 的除法的其余部分得到“堆栈溢出”异常
- c# - 每次列表大小不同时,如何比较编辑器脚本中的两个列表以仅创建一次 for 循环?
- python - 无法构建张量流 C++ windows 10,找不到 numpy
- c# - 如何使用流利的 nhibernate 在 Visual Studio 控制台中显示 SQL?