我正在尝试使用Perl脚本将Jenkins工件发送到共享驱动器后期构建活动,但是从下面的代码中,%versionName%
值已经被设置为批处理脚本中的环境变量。
我不知道如何将环境变量传递给Perl脚本。我收到了输出Motiv_Android__V_%versionName%
,但我期待Motiv_Android__V_1.X.X.X
。
%versionName%
的值为1.X.X.X
。
use warnings;
use File::Copy;
use File::Copy::Recursive qw (dircopy);
my $source_dir = 'C:\test';
my $target_dir = 'Z:\main\term\ban\test';
my $artifact_dir = 'C:\Users\lavana\Projects\MyApplication\';
my ( %versionName ) = @ARGV;
$Artifact_name = "Motiv_Android_\_V\_%versionName%";
print "artifact $Artifact_name\n";
mkdir $Artifact_name;
opendir( my $DIR, $source_dir ) || die "can't opendir $source_dir: $!";
my @files = readdir( $DIR );
foreach my $t ( sort grep( /^.*\.apk$/, @files ) ) {
if ( "$source_dir/$t" ) {
copy "$source_dir/$t", "./$Artifact_name/$t"
dircopy("$artifact_dir/$Artifact_name","$target_dir/$Artifact_name");
}
}
closedir($DIR);
答案 0 :(得分:-1)
通过%ENV
哈希访问环境。
替换
$Artifact_name = "Motiv_Android_\_V\_%versionName%";
与
$Artifact_name = "Motiv_Android_\_V\_$ENV{versionName}";
或
$Artifact_name = "Motiv_Android_\_V\_" . $ENV{versionName};
请注意,这些斜杠是无用的,因此您可以使用
$Artifact_name = "Motiv_Android__V_" . $ENV{versionName};
答案 1 :(得分:-2)
答案 2 :(得分:-2)
要获取perl中的环境变量,您应该使用%ENV或Env perl模块。对于您的示例,这可能是最简单的:
my $version_name = $ENV{versionName}