如何使用shell脚本比较CPU使用率值,我得到一个错误,因为[:=:一行运算符在if [ $message -ne "" ]
行预期
#!/bin/sh
expected_cpuusage="95"
cpu_usage=`top -n 1 -b|grep Cpu|awk '{print $2}'|cut -d"%" -f1""`
message=""
if [ $cpu_usage -gt $expected_cpuusage ] ##{x%?}
then
echo "CPU usage exceeded";
if [ $message -ne "" ]
then
message="$message\n\nCPU usage exceeded configured usage limit \nCurrent CPU usage is $cpu_usage\nConfigured CPU usage is $expected_cpuusage";
else
message="CPU usage exceeded configured usage limit \nCurrent CPU usage is $cpu_usage\nConfigured CPU usage is $expected_cpuusage";
fi ;
fi
答案 0 :(得分:2)
答案 1 :(得分:0)
>
是一个重定向运算符。你想要-gt
if [ $cpu_usage -gt $expected_cpuusage ]
这要求$ cpu_usage看起来像一个整数,如果没有则会失败并产生错误。 (即,如果它包含0-9以外的字符。-gt不会比较浮点值,因此包含'。'的字符串将不起作用。)对于浮点比较,请使用expr:
if expr $cpu_usage \> $expected_cpuusage > /dev/null; then
使用像[[,但这些构造限制脚本的可移植性的bash内置函数)进行比较有更简单的方法。 当您使用空字符串时,会出现另一个错误。尝试使用引号:
if [ "$message" -ne "" ]
但使用起来要清楚得多:
if [ -n "$message" ]