我的脚本:
#!/usr/local/bin/perl
use POSIX qw(strftime);
use strict;
use warnings;
use Getopt::Long;
##input parameters
my ($artifact,$package_id);
GetOptions("artifact=s" =>$artifact,
"package_id=i" => $package_id);
if($artifact =~ /.zip$/i)
{
chdir("/apps/checkout/artifactory/xxkintana/$package_id");
unzip $artifact;
}
运行:
/script.pl 4370177 test-1.0.zip
错误:
在的模式匹配(m//)中使用了未初始化的值/script.pl第21行。
请帮我查一下它的zip文件。输入文件,如test-1.0.zip
-Thnaks
您正在检查$artifact
是否以.zip
结束,但在调用脚本时实际上并没有设置它。
./script.pl --package_id=4370177 --artifact=test-1.0.zip
我建议您清理选项的解析,这样您就可以真正进行一些错误检查。
#!/usr/local/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
use Getopt::Long;
##input parameters
GetOptions(
"artifact=s" => my $artifact,
"package_id=i" => my $package_id,
) or usage();
usage("Unknown arguments: @ARGVn") if @ARGV;
usage("--artifact is requiredn") if ! $artifact;
usage("--package_id is requiredn") if ! $package_id;
if ($artifact =~ /.zip$/i) {
chdir("/apps/checkout/artifactory/xxkintana/$package_id");
unzip $artifact;
}
sub usage {
my $message = shift;
die "${message}Usage: ./$0 --artifact=<artifact> --package_id=<id>n";
}
最后,我可能会进行额外的错误检查,以确保您尝试chdir
的目录存在,$artifact
存在,并为这些情况以及您能想到的任何其他情况抛出适当的错误消息。