脚本以将小数号与其他数字进行比较



试图获得某些产品服务器的CPU利用率,如果它达到Sunos服务器的某些价值,请提醒。

在下面尝试尝试:

#!/usr/bin/sh
CPU=10
prstat -a 3 1 | awk '{print $1,$2,$9;}' | head -5 > top5.txt
cat top5.txt | awk '{print $3;}' | sed '1d' > re.txt
if [ `cat re.txt` -gt $CPU ];
then
echo "this is TEST"
fi

top5.txt文件的内容:

cat test.txt
PID USERNAME CPU
20845 sql 2.5
25690 sql 0.3
986 splunk 0.2
5 root 0.1

re.txt文件的内容:

cat re.txt
2.5
0.3
0.2
0.1

获取错误:

 " [: 0.3%: unknown operator"

前两个命令正在执行和给出预期的结果,但是当它循环检查条件(> 10)时,如果来自文件" re.txt"的值,则无法进行比较。

请有人可以说出一种比较从文件读取的值的方法。

感谢ADV ....

prstat -a 3 1|awk -v cpu=10 'NR<=5 && NR!=1 && $3 > cpu{print "This is Test..."}' 

这是一个awk解决方案,在这里所有条件都不完全纯净。另外,请注意,为您的处理创建Tempory文件不是一个很好的解决方案。(例如top5.txt ,re.txt)。

说明:

awk -v cpu=10:这是为名为 cpu的尴尬变量分配值。
NR<=5:这意味着前5行。
NR!=1:不是第一行。
NR<=5 && NR!=1:这是2至5行的组合手段。
$3>cpu:这意味着如果第三柱是Greter,则可变cpu的值。

如果满足所有上述条件,请执行{print "this is test"}

这是示例:

echo "$x"
PID USERNAME CPU
20845 sql 2.5
25690 sql 0.3
986 splunk 0.2
5 root 0.1
4 test 11
echo "$x" |awk -v cpu=10 'NR<=6 && NR!=1 && $3 > cpu{print "This is Test... " $0}'
This is Test... 4 test 11

最新更新