簡體   English   中英

Unix Shell腳本中浮點值的關系運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM