gpt4 book ai didi

非零值的 perl 数组

转载 作者:行者123 更新时间:2023-12-02 05:12:26 28 4
gpt4 key购买 nike

我正在尝试编写基于“ps”的“服务”脚本。我的代码:

#!/usr/bin/perl
use strict;
use warnings;
die "usage: $0 <service name>\n" unless $ARGV[0];
my $service = $ARGV[0];
open(my $ps, "ps -aux |") || die "Uknown command\n";
my @A = <$ps>;
close $ps;
foreach my $i(grep /$service/, @A){
chomp $i;
if($i=~ /root/){
next
}
print "$i\n";
}

我的问题:针对 undef arg 运行脚本时,如:

$0 blablabla 

如果没有这样的服务出现/当返回0时我想返回一个输出谢谢

最佳答案

我假设您要问的是:如何在找不到匹配行时给出正确的消息?

好吧,只需将结果存储在一个数组中即可:

my @lines = grep { !/root/ && /$service/ } @A;

if (@lines) { # if any lines are found
for my $line (@lines) {
...
}
} else {
print "No match for '$service'!\n";
}

或者您可以打印匹配项的数量,而不管它们的数量:

my $found = @lines;
print "Matched found: $found\n";

另请注意,您可以在 grep 中添加对 root 的检查。

作为旁注,这部分:

die "usage:    $0 <service name>\n" unless $ARGV[0];
my $service = $ARGV[0];

也许写得更好

my $service = shift;
die "usage ...." unless defined $service;

它专门检查参数是否已定义,而不是 true 或 not。

关于非零值的 perl 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207013/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com