从带有变量的Perl脚本中执行Perl脚本
我相信我有这种正确的想法。我可以打印变量,没问题。将VRIABLE传递给ups检查脚本时,是否未发生任何情况从带有变量的Perl脚本中执行Perl脚本,perl,Perl,我相信我有这种正确的想法。我可以打印变量,没问题。将VRIABLE传递给ups检查脚本时,是否未发生任何情况 #!/usr/bin/perl open FILE, "upslist.txt"; while ($line=<FILE>){ if ($line=~/^(.*?),(.*?)$/){ #print "ups:$1 string:$2\n"; do 'check_snmp_mgeups-0.1.pl -H $1 -C $2'; } } 谢
#!/usr/bin/perl
open FILE, "upslist.txt";
while ($line=<FILE>){
if ($line=~/^(.*?),(.*?)$/){
#print "ups:$1 string:$2\n";
do 'check_snmp_mgeups-0.1.pl -H $1 -C $2';
}
}
谢谢您的帮助。您在此处使用单引号,这将禁止插值:
do 'check_snmp_mgeups-0.1.pl -H $1 -C $2';
另外,您可能想在这里使用系统
,而不是do
system( "check_snmp_mgeups-0.1.pl", "-H", $1, "-C", $2 ) == 0
or die "system call to check_snmp_mgeups-0.1.pl failed: $?";
<>(编辑使用<代码>系统> <代码>,<代码>或而不是<代码> < <代码> >我的C++显示。 这里使用单引号,这禁止插值:
do 'check_snmp_mgeups-0.1.pl -H $1 -C $2';
另外,您可能想在这里使用系统
,而不是do
system( "check_snmp_mgeups-0.1.pl", "-H", $1, "-C", $2 ) == 0
or die "system call to check_snmp_mgeups-0.1.pl failed: $?";
<>(编辑使用<代码>系统> <代码>、<代码>或而不是< > > <代码>我的C++正在显示。 您可以用<代码>本地< /代码> <代码> @ ARGV < /代码>:
while ($line=<FILE>){
if ($line=~/^(.*?),(.*?)$/){
#print "ups:$1 string:$2\n";
local @ARGV = ("-H", $1, "-C", $2);
do 'check_snmp_mgeups-0.1.pl';
}
}
while($line=){
如果($line=~/^(.*),(.*)$/){
#打印“ups:$1字符串:$2\n”;
本地@ARGV=(“-H”、$1、“-C”、$2);
执行“检查\u snmp\u mgeups-0.1.pl”;
}
}
但如果您试图将一些功能从“代码”> SqpMnMgEUPS-0.1.PL < /C>脚本集成到您的主脚本中,请考虑重新设计<代码> CHECKYSNMPGMUEPS-0.1.PL < /C>作为可重用的模块,您可以将其导入到脚本中,并通过子程序调用而不是笨重的
do文件
机制访问其功能。您可以使用@ARGV的本地
副本来实现这一点:
while ($line=<FILE>){
if ($line=~/^(.*?),(.*?)$/){
#print "ups:$1 string:$2\n";
local @ARGV = ("-H", $1, "-C", $2);
do 'check_snmp_mgeups-0.1.pl';
}
}
while($line=){
如果($line=~/^(.*),(.*)$/){
#打印“ups:$1字符串:$2\n”;
本地@ARGV=(“-H”、$1、“-C”、$2);
执行“检查\u snmp\u mgeups-0.1.pl”;
}
}
但如果您试图将一些功能从“代码”> SqpMnMgEUPS-0.1.PL < /C>脚本集成到您的主脚本中,请考虑重新设计<代码> CHECKYSNMPGMUEPS-0.1.PL < /C>作为可重用的模块,您可以将其导入到脚本中,并通过子程序调用而不是笨重的do文件
机制来访问其功能。您可能在这里混用了引号。您需要使用“而不是”:
#!/usr/bin/perl
open FILE, "upslist.txt";
while ($line=<FILE>){
if ($line=~/^(.*?),(.*?)$/){
#print "ups:$1 string:$2\n";
my $result = `check_snmp_mgeups-0.1.pl -H $1 -C $2`;
}
}
#/usr/bin/perl
打开文件“upslist.txt”;
而($line=){
如果($line=~/^(.*),(.*)$/){
#打印“ups:$1字符串:$2\n”;
my$result=`check_snmp_mgeups-0.1.pl-H$1-C$2`;
}
}
您可能在这里混用了引号。您需要使用“而不是”:
#!/usr/bin/perl
open FILE, "upslist.txt";
while ($line=<FILE>){
if ($line=~/^(.*?),(.*?)$/){
#print "ups:$1 string:$2\n";
my $result = `check_snmp_mgeups-0.1.pl -H $1 -C $2`;
}
}
#/usr/bin/perl
打开文件“upslist.txt”;
而($line=){
如果($line=~/^(.*),(.*)$/){
#打印“ups:$1字符串:$2\n”;
my$result=`check_snmp_mgeups-0.1.pl-H$1-C$2`;
}
}
你能发几行upslist.txt
吗?你能发几行upslist.txt
吗?我不知道我这里做错了什么。我得到:检查\u snmp\u mgeups-0.1.pl的系统调用失败:-1在ups\u crunch第11行,第2行。您可能需要将完整路径放在那里check\u snmp\u mgeups-0.1.pl
。另外,如果check\u snmp\u mgeups-0.1pl
脚本未标记为可执行,则您可能需要chmod+x
它。不确定我在这里做错了什么。我得到:检查\u snmp\u mgeups-0.1.pl的系统调用失败:-1在ups\u crunch第11行,第2行。您可能需要将完整路径放在那里check\u snmp\u mgeups-0.1.pl
。另外,如果check\u snmp\u mgeups-0.1pl
脚本未标记为可执行,则可能需要chmod+x
将其删除。