【发布时间】:2018-06-27 18:05:11
【问题描述】:
这是我的代码
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
【问题讨论】:
-
use warnings;会有所帮助。 -
Don't parse
dfoutput. 它通常不是机器可读的。改用包装 statvfs 系统调用的模块,例如Filesys::DfPortable.
标签: regex perl if-statement