我正在尝试创建一个简单的脚本来检查CPU使用率是否处于某个级别。我有一个Raspberry Pi用于这个项目。
我目前唯一的问题是我有变量CPU
这是CPU使用率,当脚本运行时,我收到错误
line 25: [: 4.8: integer expression expected
我不确定为什么bash会返回这个,如果BASH真的不关心像JAVA这样的int,String等。找到了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
答案 0 :(得分:4)
问题是4.8是非整数值。
您可以使用bc来处理非整数值,如下所示:
if [[ $(echo "$CPU > 1" | bc -l) -eq 1 ]];
它会将布尔表达式返回为1表示true或0表示false。