我有一个脚本可以解析日志文件,抓取一个数字,并通过AWK与数字进行比较。如果该数字大于,则应该提供回声以通知我该数字太高。
代码的第一部分包括以下内容:
cat $d | grep send | awk '{print $1}' | awk '$1 > 40.0 {print $0;}' > /dev/null 2>&1
测试为我提供了我想要的正确项目。
下一部分是我的IF声明。编码如下:
if [ "$?" = "0" ]
then
host=$(cat $d | grep Host | awk '{print $1}')
echo "$host has high sending usage!"
else
echo "--" > /dev/null 2>&1
fi
我的问题是,当我运行这一小部分时,它说两个测试文件都有很高的使用率,我不确定为什么。
user@server:~/lab/CPU-Util$ ./message.sh
Host-01 has high sending usage!
Host-02 has high sending usage!
更新:更新更清晰。
我有两个文件,其中包含以下信息:
1.1.1.1
Host-01
five seconds: 6%/0%; one minute: 3%; five minutes: 3%
45.58241 Mbps send usage
2.1677 Mbps download usage
如果发送使用率高于设定的阈值,40用于测试目的,我希望能够解析它,如果“发送使用”部分高于该值,则给我一条回声消息,如我的IF中所述言。
答案 0 :(得分:1)
使用if [ "$?" = 0 ]
,您正在测试上一个命令是否成功。它总是成功,所以测试总是通过。
由于您的许多输出语句被重定向到/ dev / null,因此无法从发布的示例输入生成已发布的预期输出,所发布的脚本无法在给定的情况下运行示例输入(没有你发布的命令所使用的“主机名”),并且没有明显的理由说明你为什么要使用一堆管道命令然后切换到shell等等,但它可能就是这样:
awk '
/Host/ { host=$1 }
/send/ && ($1 > 40) { printf "%s has high sending usage!\n", host }
' "$d"