无法获取错误并检查它是否存在
Unable to get the error and check if it exist
我正在尝试访问服务器并获取其名称,但它不可用我该如何处理错误并继续 script.If 此命令的其余部分 qx($srvername)
returns 一个错误,我想退出 for
循环
my @s =qw(v200 pm363 wq280 );
foreach $a (@s){
eval {
my $srvername="wmic /node: '$a' computersystem get Name";
my $opt = qx($srvername) ;
if($!){
next;
}
};
print "here$a\n";
}
如果要使用 $opt
变量,需要在 eval
块之外声明它。您还需要在 eval
块之外执行 next
。
我已经围绕您的代码更改了很多东西。
我们现在在 eval
之外声明 $opt
和 $srvername
。最好将 eval
的范围尽可能小,并且创建字符串不会失败。
然后我们在 eval
内调用 qx()
,并分配 $opt
,它在 foreach
块内。这样您以后就可以访问它了。
如果 qx
失败,我们 die
,它会跳出 eval
块。如果你关心 qx
抛出的错误,你可以抛出 $?
。
在 eval
之后,我们检查 $@
,其中包含评估错误。如果里面有东西(可能是 qx
中的 $?
),我们将转到 next
迭代。
my @s = qw( v200 pm363 wq280 );
foreach my $node ( @s ){
my $opt;
my $srvername = "wmic /node: '$node' computersystem get Name";
eval {
$opt = qx($srvername) or die $?;
};
next if $@;
print "$node - opt\n";
}
请注意,我还将 $a
重命名为 $node
。变量名称 $a
与 $b
一起为 sort
保留。给你的变量起有意义的名字也是个好主意。
我正在尝试访问服务器并获取其名称,但它不可用我该如何处理错误并继续 script.If 此命令的其余部分 qx($srvername)
returns 一个错误,我想退出 for
循环
my @s =qw(v200 pm363 wq280 );
foreach $a (@s){
eval {
my $srvername="wmic /node: '$a' computersystem get Name";
my $opt = qx($srvername) ;
if($!){
next;
}
};
print "here$a\n";
}
如果要使用 $opt
变量,需要在 eval
块之外声明它。您还需要在 eval
块之外执行 next
。
我已经围绕您的代码更改了很多东西。
我们现在在 eval
之外声明 $opt
和 $srvername
。最好将 eval
的范围尽可能小,并且创建字符串不会失败。
然后我们在 eval
内调用 qx()
,并分配 $opt
,它在 foreach
块内。这样您以后就可以访问它了。
如果 qx
失败,我们 die
,它会跳出 eval
块。如果你关心 qx
抛出的错误,你可以抛出 $?
。
在 eval
之后,我们检查 $@
,其中包含评估错误。如果里面有东西(可能是 qx
中的 $?
),我们将转到 next
迭代。
my @s = qw( v200 pm363 wq280 );
foreach my $node ( @s ){
my $opt;
my $srvername = "wmic /node: '$node' computersystem get Name";
eval {
$opt = qx($srvername) or die $?;
};
next if $@;
print "$node - opt\n";
}
请注意,我还将 $a
重命名为 $node
。变量名称 $a
与 $b
一起为 sort
保留。给你的变量起有意义的名字也是个好主意。