gpt4 book ai didi

linux - 预期为整数表达式 (Bash)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:20 30 4
gpt4 key购买 nike

我正在尝试创建一个简单的脚本来检查 CPU 使用率是否处于特定水平。我有一个用于该项目的 Raspberry Pi。

我目前唯一的问题是我有变量 CPU,它是 CPU 使用率,当脚本运行时,我得到错误

line 25: [: 4.8: integer expression expected

如果 BASH 真的不像 JAVA 那样关心 int、String 等,我不确定为什么 bash 返回这个。发现了 here .

此外,我有 if 语句:if $CPU -gt 1 仅用于测试(它现在应该返回 true)

red='\e[0;31m'
yellow='\e[1;33m'
NC='\e[0m' # No Color
echo -e "${NC}Starting Server!${NC}"
echo -e "${red}Errors in red!${NC}"
echo -e "${yellow}Info in yellow!${NC}"
sleep 1
echo -e "\n\n"
##CPU USAGE STUFF
echo -e "${yellow}Current CPU Usage:"
CPU=$(top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \
awk '{print 100 - $1""}')
echo $CPU %
echo -e "${NC}**********${NC}"
cd /root/mc_server/
sleep 1


##CPU USAGE LOOP CHECKER
while :
do
sleep 5
echo $CPU
if [ $CPU -gt 1 ]
then
echo -e "${red}ALERT! CPU Usage is TOO HIGH!${red}"
fi

done
##


##java -Xmx400M -jar bukkit.jar -o true

最佳答案

问题是 4.8 是一个非整数值。

您可以使用 bc 来处理非整数值,如下所示:

if [[ $(echo "$CPU > 1" | bc -l) -eq 1 ]];

它将返回 bool 表达式,1 表示真,0 表示假。

关于linux - 预期为整数表达式 (Bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612017/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com