【问题标题】:Passing a Variable to a script calling itself将变量传递给调用自身的脚本
【发布时间】:2015-11-26 06:44:31
【问题描述】:

我的脚本将 ClearCase 视图存储在变量中。要在此视图中操作,脚本需要在启动视图后再次在视图内部调用自身。 代码如下所示

 if($params{ViewSet} eq 'no')
    {
       # Start the View
       # Store the View in $View
       # Call the Script in the new-set View with parameter -ViewSet yes
    }
if($params{ViewSet} eq 'yes')
    {
      # Do Work inside the View
    }

问题是,显然变量$View 在我第二次调用我的脚本时没有定义,因为它是在第一个 if 循环中定义的。

当我第二次调用脚本时,我可以传递我存储在$View 中的视图吗? 在进入 if-Statements 之前设置视图不会说话,然后我会启动视图两次。

【问题讨论】:

  • 你为什么要这样做?在这里说明您要解决的实际问题会有所帮助。
  • @dan1111 这是一个我很清楚的 ClearCase 特定问题。我已经在下面回答了。

标签: perl view clearcase


【解决方案1】:

使用参数-ViewSet在新设置的视图中调用脚本

如果涉及调用cleartool setview不要setview spawns a subshell in,您在脚本中定义的内容将不可见。

当您的脚本需要访问dynamic view started 时,请务必使用完整 动态视图路径:

/view/myDynView
# under which you would see:
/view/myDynView/vobs/MyVob

【讨论】:

  • 我知道 subshel​​l 问题,我想知道是否有任何解决方法的选项。我为自己找到了一个可行的解决方案,但感谢您的提示;)解决方案首先从我正在使用的视图中获取视图名称,并将有关新视图的所有信息存储在新变量中。这样,我实际上并没有将变量从一个视图(shell)传递到另一个视图中,而是在新视图中创建了完全相同的变量。解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 2019-07-16
  • 2021-08-10
  • 2021-08-14
  • 2012-11-15
  • 2017-05-24
  • 1970-01-01
相关资源
最近更新 更多