首页 > 解决方案 > IF中的Perl多个条件

问题描述

这是我的代码

my @usage = `df -hT | grep -e CC -e usr`;
foreach (@usage) {
    if ($_ =~ m/([0-9]{0,3})% \/(.*)/) {
        print "$1 - $2\n";
        if ( ($2 == "CC" && $1 >= 80) || ($2 == "usr" && $1 >= 90) ) {
            print "/$2 parition is at $1% utilization\n";
        }
    }
}

这是一个检查分区是否使用的简单脚本。问题在于 IF 条件。

if ( ($2 == "CC" && $1 >= 80) || ($2 == "usr" && $1 >= 90)

应转换为 IF(分区为 CC 且使用率超过 80%)或(IF 分区为 usr 且其使用率超过 90%)然后输出。

我的 CC 分区是 83%,我的 usr 是 85%。因此我应该只看到

/CC 分区为 83%

但我明白了

83 - usr
/usr parition is at 85% utilization
83 - CC
/CC parition is at 83% utilization

标签: regexperlif-statement

解决方案


您需要eq用于比较字符串

if ( ($2 eq "CC" && $1 >= 80) || ($2 eq "usr" && $1 >= 90) ) {

推荐阅读