[英]Relational operators for floating point values in Unix Shell Scripting
我正在编写一个shell脚本,以查明是否有任何进程占用了过多的CPU使用率,然后该脚本将向支持团队发送邮件。
我的阈值限制为25,并且将CPU使用率作为:
cpuUsage=`ps -eo pcpu,pid,args | sort -k 1 -nr | head -1`
遍历它以找出cpuUsage
for count in $cpuUsage
do
CPUusageCount=$count
done
然后像这样检查带有阈值限制的CPUUsageCount
:
if [ $CPUusageCount -gt $THRESHOLD_LIMIT ];
then
#Sending mail to Support group
fi
在这里,我面临一条错误消息: Integer expression expected at if [ $CPUusageCount
。 我们不能使用-gt
来验证浮点数吗? 请帮我怎么实现呢?
您可以决定从数字中去除小数部分,然后使用-ge
进行比较:
if [ "${CPUusageCount%.*}" -ge $THRESHOLD_LIMIT ]
then
# Send email
fi
您可以使用command-substitution
来比较两个浮点数。
CPUusageCount=99.99
THRESHOLD_LIMIT=55.55
if [ `python -c "print $CPUusageCount>$THRESHOLD_LIMIT"` == 'True' ]; then
echo Sending mail to Support group
fi
您可以使用bc命令:
if [ $(echo "$CPUusageCount >= $THRESHOLD_LIMIT"|bc) -eq 1 ];
ksh支持浮点运算
#!/bin/ksh -x
CPUusageCount=99.99
THRESHOLD_LIMIT=55.55
if [ $CPUusageCount -gt $THRESHOLD_LIMIT ]; then
echo Sending mail to Support group
fi
给
+ CPUusageCount=99.99
+ THRESHOLD_LIMIT=55.55
+ [ 99.99 -gt 55.55 ]
+ echo Sending mail to Support group
Sending mail to Support group
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.