bash - 当 FreeBSD 上温度过高时,Bash 脚本会发出哔哔声
问题描述
我一直在研究一个 Bash 脚本,当 PC 太热时会发出哔哔声。我已删除哔声以尝试识别问题。到目前为止我所拥有的:
temp=$(sysctl -n hw.acpi.thermal.tz0.temperature | tr -d 'C')
echo $temp
if ["$temp" -gt "30.1"]
then
echo "temp hot"
else
echo "temp ok"
fi
我的输出是
54.1
temp.sh: line 4: [54.1: command not found
temp ok
删除if
语句只是输出
54.1
所以我认为这if
是行不通的声明。
解决方案
你应该使用双括号(( ))
来做算术表达式,因为 Bash 不能处理十进制值,你只需要删除点(就像你想把它乘以十一样)。
temp=$(sysctl -n hw.acpi.thermal.tz0.temperature | tr -d 'C')
max_temp=50.2
(( ${temp//./} > ${max_temp//./} )) && echo "temp hot" || echo "temp ok"
确保对两个值使用相同的格式(尤其是前导零,54.10
将变为5410
)。
如果不能保证格式,还有第二种方法,正如 Benjamin W 提到的,使用bc
. 您可以向此命令发送涉及浮点数的逻辑操作,如果为真则返回 0,否则返回 1。
temp=$(sysctl -n hw.acpi.thermal.tz0.temperature | tr -d 'C')
max_temp=50.2
(( $(echo "$temp > $max_temp" | bc) )) && echo "temp hot" || echo "temp ok"
推荐阅读
- android - 资源文件中定义的要“包含”的边距没有影响
- php - 虽然循环它只打印我 1 个值,它是最后一个
- ubuntu - 无法访问部署到 ubuntu 的 .Net Core 2.1 Web 应用程序
- node.js - 在 renderStatic 期间反应头盔混合场
- deep-learning - 除了 Keras 和 Spacy,我可以使用 Stanford Core NLP 进行深度学习吗?
- c# - 使用 Ajax 渲染局部视图的问题
- reactjs - 用打字稿反应 Redux
- android - Android Studio 应用显示问题
- idris - 让 Idris 相信递归调用的整体性
- ajax - 尝试导入 json 时如何修复 django 中的 ImportError?