加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl脚本中共享ENV变量

发布时间:2020-12-15 21:39:20 所属栏目:大数据 来源:网络整理
导读:我有两个Perl脚本和GIT钩子脚本.在那里我正在验证GIT工作流程.这是调用堆栈的脚本. 预推 – unpush-changes – 依赖关系树 unpush-changes perl脚本中有一个for循环,它将调用dependency-tree perl脚本. 前推 system("unpushed-changes"); my $errorMsg = $EN
我有两个Perl脚本和GIT钩子脚本.在那里我正在验证GIT工作流程.这是调用堆栈的脚本.

预推 – > unpush-changes – >依赖关系树

unpush-changes perl脚本中有一个for循环,它将调用dependency-tree perl脚本.

前推

system("unpushed-changes");
  my $errorMsg = $ENV{'GIT_FLOW_ERROR_MSG'}// '';
  if($errorMsg eq "true"){
     print "Error occured!";
   }

unpush-changes.pl

for my $i (0 .. $#uniqueEffectedProjectsList) {
      my $errorMsg = $ENV{'GIT_FLOW_ERROR_MSG'}// '';
      if($errorMsg ne "true"){
        my $r=system("dependency-tree $uniqueEffectedProjectsList[$i]");
     }else{
        exit 1;
     }

   }

dependency-tree.pl

if(system("mvn clean compile  -DskipTests")==0){
     print "successfully build"; 
     return 1;
 }else{
      $ENV{'GIT_FLOW_ERROR_MSG'} = 'true';
      print "Error occured";
      return 0;
  }

在我的依赖树脚本中,如果发生错误,我已经设置了ENV变量,并且将在unpush-changes脚本中的每次迭代中进行检查.但是它的ENV值为空而不是true.我也尝试返回一些值,如果失败并尝试验证它,但似乎它也没有工作.所以我的要求是我如何在所有脚本之间共享一个全局变量.如果有更好的方法,请告诉我.

解决方法

通常,子进程从其父进程继承环境的单独副本,并且子进程所做的更改不会传播到父环境.
Env::Modify提供了解决此问题的解决方法,该问题实现了perlfaq所讨论的 “shell magic”.

典型用法:

use Env::Modify 'system',':bash';

print $ENV{FOO};                   #   ""
system("export FOO=bar");
print $ENV{FOO};                   #   "bar"
...
print $ENV{GIT_FLOW_ERROR_MSG};    #   ""
system("unpushed-changes");
print $ENV{GIT_FLOW_ERROR_MSG};    #   "true"
...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读