首页 > 解决方案 > 在 awk 中使用嵌套的“if”需要输入

问题描述

我有下面的脚本,这将有助于显示内存值,但是如果缓冲区内存 < 可用内存其他 0,我想将变量打印为 VALUE_NUM 作为 1。

请就如何实现它提供您的意见。

    if [ $REPORT_MEMORY_FREE_AS_MEMORY_AVAILABLE -eq 1 ]
then
    free -m | awk -v OFS="" '
            NR==2 { MEM_TOTAL_MB = $2;
                    MEM_USED_MB = $3;
                    MEM_FREE_MB = $4;
                    MEM_BUFFER_MB = $6;
                    MEM_CACHED_MB = $7;
            }
            NR==3 {
                    MEM_CACHE_USED_MB = $3;
                    MEM_CACHE_FREE_MB = $4;

            }
            END {
                    print "name=Hardware Resources_mod|Memory|Total (MB),aggregator=OBSERVATION,value=", MEM_TOTAL_MB;
                    print "name=Hardware Resources_mod|Memory|Used (MB),aggregator=OBSERVATION,value=", MEM_USED_MB;
                    print "name=Hardware Resources_mod|Memory|Free (MB),aggregator=OBSERVATION,value=", MEM_FREE_MB;
                    print "name=Hardware Resources_mod|Memory|Buffer (MB),aggregator=OBSERVATION,value=",MEM_BUFFER_MB;
                    print "name=Hardware Resources_mod|Memory|Cache (MB),aggregator=OBSERVATION,value=",MEM_CACHED_MB;
                    print "name=Hardware Resources_mod|Memory|cache_Used (MB),aggregator=OBSERVATION,value=",MEM_CACHE_USED_MB;
                    print "name=Hardware Resources_mod|Memory|cache_Free (MB),aggregator=OBSERVATION,value=",MEM_CACHE_FREE_MB;

                    MEM_USED_PCT = int((MEM_USED_MB / MEM_TOTAL_MB) * 100);
                    print "name=Hardware Resources_mod|Memory|Used %,aggregator=OBSERVATION,value=", MEM_USED_PCT;
                    print "name=Hardware Resources_mod|Memory|Free %,aggregator=OBSERVATION,value=", 100 - MEM_USED_PCT;
            }
     '

标签: awknested-if

解决方案


推荐阅读